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.

Gana
la source
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'];
Shakti Singh
la source
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);
bmaupin
la source
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.

avétarman
la source
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());
Lee Davis
la source
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;
fatnjazzy
la source
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'];
Raja Sekhar
la source
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]);
Алексей Запруднов
la source
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 :)

Umut Sürmeli
la source
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

Pushkar Pokharkar
la source
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';
Legi Smith
la source
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
AndyLovesRuby
la source
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;");
SureFoot
la source
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'];
Sani Kamal
la source
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

Ram Pukar
la source
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;
Abdullah Al Shiam
la source
-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

Samithe Adhikari
la source
-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;
Portefeuille Yury
la source
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'));
Antiprospereux
la source