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;