Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere il conteggio delle righe nella tabella MySQL usando PHP?

Hai un paio di opzioni su come ottenere il valore di COUNT(*) dall'SQL. I tre più semplici sono probabilmente questi:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

o utilizzando l'alias di colonna:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

o usando la matrice numerica:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

Se stai usando PHP 8.1, puoi farlo ancora più semplice:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_column($result);
echo $count;
// or using OO style
echo $con->query("SELECT COUNT(*) FROM news")->fetch_column();

Non utilizzare mysqli_num_rows contare i record nel database come suggerito in alcuni punti del web. Questa funzione è molto poco utile e il conteggio dei record non è sicuramente uno di questi. Usando mysqli_num_rows chiederesti a MySQL di recuperare tutto record di corrispondenza dal database, che potrebbe richiedere molto risorse. È molto meglio delegare il lavoro di conteggio dei record a MySQL e quindi ottenere semplicemente il valore restituito in PHP come mostrato nella mia risposta.

Consiglierei anche di imparare l'OOP, che rende il codice più pulito e più facile da leggere. Lo stesso con OOP potrebbe essere fatto come segue:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

Se la tua query utilizza variabili, potresti fare una cosa simile, ma usando istruzioni preparate.

$sql = "SELECT COUNT(*) FROM news WHERE category=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$count = $stmt->get_result()->fetch_row()[0];
echo $count;