sélectionnez count (*) dans la table de mysql en php


93

Je peux obtenir à la fois la valeur et la ligne du résultat de la requête mysql.

Mais j'ai du mal à obtenir la sortie unique d'une requête. par exemple:

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

J'ai besoin du résultat à afficher. Mais je n'obtiens pas le résultat.

J'ai essayé les méthodes suivantes:

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

Mais je n'ai pas réussi à afficher (obtenir) la valeur réelle.


8
Vous devriez maintenant utiliser PDO .
Lucio

Réponses:


202

Vous devez alias l'agrégat en utilisant le asmot - clé pour l'appeler à partir demysql_fetch_assoc

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

7
Après la version 5.x, cette requête ne fonctionnera pas, remplacez simplement mysql par mysqli pour le faire fonctionner.
ajay verma

32

Si vous n'avez besoin que de la valeur:

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

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);enregistre une variable inutile
Max Muster

Correct; ma réponse était adaptée à la question.
bmaupin

4
@eichertc l'interpréteur php a toujours la variable interne, car il a besoin d'avoir le résultat en mémoire d'une manière ou d'une autre. Donc, votre chemin ne fait qu'empirer le code à lire et à maintenir, à mon humble avis.
Tom

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

Essayez ce code.


10

Veuillez commencer à utiliser PDO.

mysql_ * est obsolète à partir de PHP 5.5.0 et sera entièrement supprimé dans 7. Facilitons la mise à jour et commençons à l'utiliser maintenant.

$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

voici le code pour afficher le nombre de lignes dans le tableau avec PHP

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

J'aime l'utilisation d' ASici, au lieu d'avoir besoin de taperecho $data['count(*)'];
Typewar

2

Pour les utilisateurs de mysqli, le code ressemblera à ceci:

$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];

après tant d'heures excellent :)


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'];
  }     
 }

En cela son compte le nombre d'occurrences dans la colonne question1, son travail complètement


1

vous pouvez également l'utiliser et mettre à niveau vers mysqli_(arrêtez d'utiliser l' mysql_*extension ...)

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

1

Avec mysql v5.7.20, voici comment j'ai pu obtenir le nombre de lignes d'une table en utilisant 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;

La troisième ligne renverra une structure qui ressemble à ceci:

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

Dans ce cas, l'instruction echo de fin renverra:

1570

1

Je pense qu'il y a une faute de frappe dans votre code et vous devriez supprimer l'avant-dernier point-virgule dans:

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

1

Vous devez alias l'agrégat en utilisant le asmot - clé pour l'appeler à partir 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>';

Résultat:

entrez la description de l'image ici


0

Je pense que c'est une meilleure réponse.

$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;

Cela conviendra également, mais c'est faire ce que renvoie la valeur d'index 0 en déplaçant le tableau de récupération. Bienvenue à tous


-1

Hors de la gamme d'options, celle-ci n'a pas été mentionnée. Même si ce n'est pas optimal ou inutile, mais cela peut être fait avec une simple boucle:

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

C'est parce qu'il n'est pas nécessaire d'écrire une boucle. Veuillez ne jamais publier de réponses contenant uniquement des codes. Chaque réponse mérite d'être expliquée - même si elle est simple. Surtout sur des pages surchargées comme celle-ci - vous devriez expliquer l'avantage de vos conseils par rapport aux autres réponses.
mickmackusa

Je crois que si cette option fonctionne même si elle n'est pas optimale à certains égards, elle peut aider quelqu'un à résoudre son problème. Quant à moi, je trouve souvent des réponses et encore plus souvent des idées qui me conviennent dans les réponses qui ne sont pas marquées comme «meilleure réponse». Et parfois, de telles «solutions étranges» révèlent la logique derrière l'idée, qui pourrait être exploitée. Prends soin de toi!
Yury Wallet le

1
Ayez de l'empathie pour les chercheurs qui essaient de déterminer la meilleure réponse pour leur projet et qui n'ont pas de temps à perdre. Les chercheurs ne veulent PAS lire 18 solutions très similaires - ils veulent trouver la meilleure réponse le plus rapidement possible. Personne ne devrait plus utiliser de mysql_fonctions - même si cette vieille question l'utilise. Dans mon IDE, il y aurait un drapeau indiquant que cela $numbpourrait ne pas être déclaré. L'utilisation d'une boucle a déjà été faite par PushkarPokharkar mais encore une fois, c'est inutile. Je ferai ma part pour aider les chercheurs en votant contre des techniques que je ne recommande pas.
mickmackusa le

1
Ce n'est PAS une attaque personnelle contre vous. C'est mon jugement sur la qualité de ce post.
mickmackusa le

-4

Si vous ne voulez que la valeur de comptage, vous pouvez faire un raccourci:

$cnt = mysql_num_rows(mysql_query('select * from students'));
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.