seleziona count (*) dalla tabella di mysql in php


92

Sono in grado di ottenere sia il valore che la riga del risultato della query mysql.

Ma sto lottando per ottenere il singolo output di una query. per esempio:

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

Ho bisogno del risultato da visualizzare. Ma non ottengo il risultato.

Ho provato con i seguenti metodi:

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

Ma non sono riuscito a visualizzare (ottenere) il valore effettivo.


8
A questo punto dovresti usare PDO .
Lucio

Risposte:


202

È necessario creare un alias dell'aggregato utilizzando la asparola chiave per richiamarlo damysql_fetch_assoc

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

7
Dopo la versione 5.x questa query non funzionerà, basta sostituire mysql con mysqli per farlo funzionare.
ajay verma

32

Se ti serve solo il valore:

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

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);sta salvando una variabile non necessaria
Max Muster

Corretta; la mia risposta è stata adattata alla domanda.
bmaupin

4
@eichertc l'interprete php ha la variabile sempre interna, in quanto ha bisogno di avere il risultato in memoria in un modo o nell'altro. Quindi il tuo modo rende il codice peggiore da leggere e mantenere, IMHO.
Tom

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

Prova questo codice.


10

Inizia a utilizzare PDO.

mysql_ * è deprecato a partire da PHP 5.5.0 e verrà rimosso completamente in 7. Rendiamo più semplice l'aggiornamento e iniziamo a usarlo ora.

$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

ecco il codice per mostrare il numero di righe nella tabella con PHP

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

Mi piace l'uso di ASqui, invece di dover digitareecho $data['count(*)'];
Typewar

2

Per gli utenti mysqli, il codice sarà simile a questo:

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

o:

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

dopo tante ore eccellente :)


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 questo conta il numero di occorrenze nella colonna question1, Funziona completamente


1

puoi anche usarlo e aggiornare a mysqli_(smetti di usare l' mysql_*estensione ...)

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

1

Con mysql v5.7.20, ecco come sono riuscito a ottenere il conteggio delle righe da una tabella utilizzando 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 terza riga restituirà una struttura simile a questa:

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

In tal caso, l'istruzione echo finale restituirà:

1570

1

Penso che ci sia un errore di battitura nel codice e dovresti rimuovere il penultimo punto e virgola in:

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

1

È necessario creare un alias dell'aggregato utilizzando la asparola chiave per richiamarlo damysqli_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>';

Risultato:

inserisci qui la descrizione dell'immagine


0

Penso che sia meglio rispondere.

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

Anche questo andrà bene, ma questo è quello che restituisce il valore di indice 0 spostando l'array di recupero. Benvenuti a tutti


-1

Fuori dalla gamma di opzioni questo non è stato menzionato. Anche se non è ottimale o non necessario ma può essere fatto con un semplice ciclo:

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

Questo perché non è necessario scrivere un ciclo. Si prega di non inserire mai solo risposte in codice. Ogni risposta merita di essere spiegata, anche se è semplice. Soprattutto su pagine sovraccariche come questa, dovresti spiegare il vantaggio del tuo consiglio rispetto ad altre risposte.
mickmackusa

Credo che se questa opzione funziona anche se non è ottimale in alcuni termini, può aiutare qualcuno a risolvere il proprio problema. Quanto a me, trovo spesso risposte e ancora più spesso idee che funzionano per me nelle risposte che non sono contrassegnate come "risposta migliore". E a volte tali "strane soluzioni" rivelano la logica dietro l'idea, che potrebbe essere sfruttata. Stai attento!
Portafoglio Yury l'

1
Avere un po 'di empatia per i ricercatori che stanno cercando di determinare la migliore risposta per il loro progetto e non hanno tempo da perdere. I ricercatori NON vogliono leggere 18 soluzioni molto simili: vogliono trovare la risposta migliore il più velocemente possibile. Nessuno dovrebbe più usare le mysql_funzioni, anche se questa vecchia domanda lo sta usando. Nel mio IDE, ci sarebbe un flag che indica che $numbpotrebbe non essere dichiarato. L'utilizzo di un ciclo è già stato fatto da PushkarPokharkar ma ancora una volta non è necessario. Farò la mia parte per aiutare i ricercatori con il downvoting di tecniche che non consiglio.
mickmackusa

1
Questo NON è un attacco personale a te. Questo è il mio giudizio sulla qualità di questo post.
mickmackusa

-4

Se vuoi solo il valore di conteggio puoi usare una scorciatoia:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.