Wählen Sie count (*) aus der Tabelle von MySQL in PHP


92

Ich kann sowohl den Wert als auch die Zeile des MySQL-Abfrageergebnisses abrufen.

Ich habe jedoch Probleme, die einzige Ausgabe einer Abfrage zu erhalten. z.B:

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

Ich brauche das Ergebnis, um es anzuzeigen. Aber ich bekomme nicht das Ergebnis.

Ich habe mit folgenden Methoden versucht:

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

Es ist mir jedoch nicht gelungen, den tatsächlichen Wert anzuzeigen (abzurufen).


8
Inzwischen sollten Sie PDO verwenden .
Lucio

Antworten:


202

Sie müssen das Aggregat mit dem asSchlüsselwort aliasen, um es aufzurufenmysql_fetch_assoc

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

7
Nach der Version 5.x funktioniert diese Abfrage nicht mehr. Ersetzen Sie einfach mysql durch mysqli, damit es funktioniert.
Ajay Verma

32

Wenn Sie nur den Wert benötigen:

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

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);speichert eine unnötige Variable
Max Muster

Richtig; Meine Antwort war auf die Frage zugeschnitten.
Bmaupin

4
@ speichernc Der PHP-Interpreter hat die Variable immer intern, da er das Ergebnis auf die eine oder andere Weise im Speicher haben muss. Ihr Weg macht den Code nur schlechter zu lesen und zu pflegen, IMHO.
Tom

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

Versuchen Sie diesen Code.


10

Bitte starten Sie PDO.

mysql_ * ist ab PHP 5.5.0 veraltet und wird in 7 vollständig entfernt. Lassen Sie uns das Upgrade vereinfachen und es jetzt verwenden.

$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

Hier ist der Code zum Anzeigen der Anzahl der Zeilen in der Tabelle mit PHP

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

Ich mag die Verwendung von AShier, anstatt echo $data['count(*)'];
schreiben zu

2

Für mysqli-Benutzer sieht der Code folgendermaßen aus:

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

oder:

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

nach so vielen stunden ausgezeichnet :)


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

In dieser Zählung ist die Anzahl der Vorkommen in der Spalte Frage1, Seine Arbeit vollständig


1

Sie können dies auch verwenden und auf aktualisieren mysqli_( keine mysql_*Erweiterung mehr verwenden ...)

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

1

Mit mysql v5.7.20 konnte ich mit PHP v7.0.22 die Zeilenanzahl aus einer Tabelle abrufen:

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

Die dritte Zeile gibt eine Struktur zurück, die folgendermaßen aussieht:

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

In diesem Fall gibt die abschließende Echoanweisung Folgendes zurück:

1570

1

Ich denke, es gibt einen Tippfehler in Ihrem Code und Sie sollten das vorletzte Semikolon in entfernen:

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

1

Sie müssen das Aggregat mit dem asSchlüsselwort aliasen, um es aufzurufenmysqli_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>';

Ergebnis:

Geben Sie hier die Bildbeschreibung ein


0

Ich denke, es ist eine bessere Antwort.

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

Dies ist auch in Ordnung, aber dies ist das, was 0 Indexwert durch Verschieben des Abrufarrays zurückgibt. begrüße alle


-1

Aus dem Bereich der Optionen wurde diese nicht erwähnt. Auch wenn es nicht optimal oder unnötig ist, kann es mit einer einfachen Schleife durchgeführt werden:

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

Das liegt daran, dass es nicht notwendig ist, eine Schleife zu schreiben. Bitte posten Sie niemals Antworten nur mit Code. Jede Antwort verdient eine Erklärung - auch wenn sie einfach ist. Besonders auf überladenen Seiten wie dieser sollten Sie den Vorteil Ihres Ratschlags gegenüber anderen Antworten erläutern.
mickmackusa

Ich glaube, wenn diese Option funktioniert, auch wenn sie in gewisser Hinsicht nicht optimal ist, kann sie jemandem helfen, sein Problem zu lösen. Was mich betrifft, finde ich oft Antworten und noch häufiger Ideen, die für mich funktionieren, in den Antworten, die nicht als "beste Antwort" gekennzeichnet sind. Und manchmal enthüllen solche "seltsamen Lösungen" die Logik hinter der Idee, dass sie ausgenutzt werden könnten. Pass auf!
Yury Wallet

1
Haben Sie ein gewisses Einfühlungsvermögen für Forscher, die versuchen, die beste Antwort für ihr Projekt zu finden, und keine Zeit zu verlieren haben. Forscher wollen NICHT 18 sehr ähnliche Lösungen lesen - sie wollen so schnell wie möglich die beste Antwort finden. Niemand sollte mehr mysql_Funktionen verwenden - auch wenn diese alte Frage sie verwendet. In meiner IDE gibt es ein Flag, das angibt, dass es $numbmöglicherweise nicht deklariert ist. Die Verwendung einer Schleife wurde bereits von PushkarPokharkar durchgeführt, ist jedoch wiederum nicht erforderlich. Ich werde meinen Teil dazu beitragen, Forschern durch Downvoting-Techniken zu helfen, die ich nicht empfehle.
Mickmackusa

1
Dies ist KEIN persönlicher Angriff auf dich. Dies ist mein Urteil über die Qualität dieses Beitrags.
mickmackusa

-4

Wenn Sie nur den Zählwert möchten, können Sie eine Abkürzung verwenden:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.