selecione a contagem (*) da tabela do mysql no php


92

Consigo obter o valor e a linha do resultado da consulta mysql.

Mas estou lutando para obter a única saída de uma consulta. por exemplo:

$result = mysql_query("SELECT COUNT(*) FROM Students;");

Preciso que o resultado seja exibido. Mas não estou obtendo o resultado.

Eu tentei com os seguintes métodos:

  1. mysql_fetch_assoc()
  2. mysql_free_result()
  3. mysql_fetch_row()

Mas não consegui exibir (obter) o valor real.


8
Agora você deve estar usando o PDO .
Lucio

Respostas:


202

Você precisa criar um alias para o agregado usando a aspalavra - chave para chamá-lo demysql_fetch_assoc

$result=mysql_query("SELECT count(*) as total from Students");
$data=mysql_fetch_assoc($result);
echo $data['total'];

7
Após a versão 5.x, esta consulta não funcionará, apenas substitua mysql por mysqli para fazê-lo funcionar.
ajay verma

32

Se você só precisa do valor:

$result = mysql_query("SELECT count(*) from Students;");
echo mysql_result($result, 0);

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);está salvando uma variável desnecessária
Max Muster

Corrigir; minha resposta foi adaptada à pergunta.
bmaupin

4
@eichertc o interpretador php tem a variável sempre interna, pois ele precisa ter o resultado na memória de uma forma ou de outra. Portanto, o seu método apenas torna o código mais difícil de ler e manter, IMHO.
Tom

14
$result = mysql_query("SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysql_fetch_assoc($result);
$count = $row['count'];

Experimente este código.


10

Comece a usar o PDO.

mysql_ * está obsoleto a partir do PHP 5.5.0 e será totalmente removido no 7. Vamos tornar mais fácil a atualização e começar a usá-lo agora.

$dbh = new \PDO($dsn, $user, $password);
$sth = $dbh->prepare('SELECT count(*) as total from Students');
$sth->execute();
print_r($sth->fetchAll());

6
$num_result = mysql_query("SELECT count(*) as total_count from Students ") or exit(mysql_error());
$row = mysql_fetch_object($num_result);
echo $row->total_count;

4

aqui está o código para mostrar o número de linhas na tabela com PHP

$sql="select count(*) as total from student_table";
$result=mysqli_query($con,$sql);
$data=mysqli_fetch_assoc($result);
echo $data['total'];

Gosto de usar ASaqui, em vez de precisar digitarecho $data['count(*)'];
Typewar

2

Para usuários mysqli, o código será semelhante a este:

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

$result = $mysqli->query("SELECT COUNT(*) AS Students_count FROM Students")->fetch_array();
var_dump($result['Students_count']);

ou:

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

$result = $mysqli->query("SELECT COUNT(*) FROM Students")->fetch_array();
var_dump($result[0]);

1
 $howmanyuser_query=$conn->query('SELECT COUNT(uno)  FROM userentry;');
 $howmanyuser=$howmanyuser_query->fetch_array(MYSQLI_NUM); 
 echo $howmanyuser[0];

depois de tantas horas excelente :)


1
$abc="SELECT count(*) as c FROM output WHERE question1=4";
$result=mysqli_query($conn,$abc);
if($result)
 {
    while($row=mysqli_fetch_assoc($result))
  {
        echo $row['c'];
  }     
 }

Nesta conta o número de ocorrências na coluna question1, seu trabalho completamente


1

você também pode usar isso e atualizar para mysqli_(pare de usar a mysql_*extensão ...)

$result = mysqli_query($conn, "SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysqli_fetch_array($result);
$count = $row['count'];
echo'$count';

1

Com o mysql v5.7.20, aqui está como consegui obter a contagem de linhas de uma tabela usando PHP v7.0.22:

$query = "select count(*) from bigtable";
$qresult = mysqli_query($this->conn, $query);
$row = mysqli_fetch_assoc($qresult);
$count = $row["count(*)"];
echo $count;

A terceira linha retornará uma estrutura semelhante a esta:

array(1) {
   ["count(*)"]=>string(4) "1570"
}

Nesse caso, a instrução echo final retornará:

1570

1

Acho que há um erro de digitação em seu código e você deve remover o penúltimo ponto e vírgula em:

$result = mysql_query("SELECT COUNT(*) FROM Students;");

1

Você precisa criar um alias para o agregado usando a aspalavra - chave para chamá-lo demysqli_fetch_assoc

$result=mysqli_query($conn,"SELECT count(*) as total from Students");
$data=mysqli_fetch_assoc($result);
echo $data['total'];

1
$db  = new PDO('mysql:host=localhost;dbname=java_db', 'root', '') or die(mysql_errno());
$Sql = "SELECT count(*) as 'total' FROM users";
$stmt = $db->query($Sql);
$stmt->execute();
$data = array();
$total = $stmt->fetch(PDO::FETCH_ASSOC);
print '<pre>';
print_r($total);
print '</pre>';

Resultado:

insira a descrição da imagem aqui


0

Acho que é melhor responder.

$query = "SELECT count(*) AS total FROM table_name"; 
mysql_select_db('database_name');
$result = mysql_query($query); 
$values = mysql_fetch_assoc($result); 
$num_rows = $values['total']; 
echo $num_rows;

-1
$qry_appr = "SELECT COUNT(*) FROM comments WHERE admin_panel_id ='$id' AND status = 'ON'";
$qry_data = mysqli_query($con, $qry_appr);
$approve_count = mysqli_fetch_array($qry_data);
$toatalCount = array_shift($approve_count);
echo $toatalCount;

Isso também funcionará, mas é o que retorna o valor de índice 0 mudando a matriz de busca. bem-vindos todos


-1

Fora do leque de opções, este não foi mencionado. Mesmo que não seja ideal ou desnecessário, pode ser feito com um loop simples:

$result=mysqli_query($conn, "SELECT count(1) as total from Students");
foreach ($result as $rez) {$numb=$rez['total'];}
echo $numb;

Isso porque não é necessário escrever um loop. Nunca poste respostas apenas com código. Cada resposta merece ser explicada - mesmo que seja simples. Especialmente em páginas sobrecarregadas como esta - você deve explicar a vantagem de seu conselho em relação a outras respostas.
mickmackusa

Acredito que se essa opção funcionar, mesmo que não seja a ideal em alguns termos, pode ajudar alguém a resolver seu problema. Quanto a mim, costumo encontrar respostas e ainda mais ideias que funcionam para mim nas respostas que não são marcadas como 'a melhor resposta'. E às vezes essas "soluções estranhas" revelam a lógica por trás da ideia, que pode ser explorada. Cuidar!
Yury Wallet

1
Tenha alguma empatia pelos pesquisadores que estão tentando determinar a melhor resposta para seu projeto e não têm tempo a perder. Os pesquisadores NÃO querem ler 18 soluções muito semelhantes - eles querem encontrar a melhor resposta o mais rápido possível. Ninguém deveria mais usar mysql_funções - mesmo que esta velha questão as esteja usando. No meu IDE, haveria um sinalizador informando que $numbpode não ser declarado. Usar um loop já foi feito por PushkarPokharkar, mas novamente é desnecessário. Farei minha parte para ajudar os pesquisadores a votar técnicas que não recomendo.
mickmackusa

1
Este NÃO é um ataque pessoal a você. Este é o meu julgamento sobre a qualidade desta postagem.
mickmackusa

-4

Se você quiser apenas o valor de contagem, poderá fazer uma abreviação:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.