Count(*)-Funktionsfehler in MySQLi
Beim Ausführen einer COUNT(*)-Abfrage in MySQLi können Benutzer auf ein unerwartetes Verhalten stoßen Das Ergebnis gibt unabhängig von der tatsächlichen Tabellengröße stets 1 zurück. Diese Diskrepanz zwischen MySQLi und phpMyAdmin kann rätselhaft sein.
Untersuchung und Lösung
Die Nichtübereinstimmung entsteht, weil MySQLi das COUNT(*)-Ergebnis als einzeiliges Recordset darstellt. Um auf die tatsächliche Anzahl zuzugreifen, muss das Ergebnis mit der Methode fetch_row() abgerufen werden.
Daher ist die korrekte Methode zum Ermitteln der Zeilenanzahl mit MySQLi:
$result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); echo '#: ', $row[0];
In dieser Modifikation Code wird die Eigenschaft „num_rows“ nicht verwendet, da das Ergebnis ein einzeiliges Recordset ist und dessen rowCount daher immer 1 ist. Stattdessen wird zum Abrufen die Methode fetch_row() verwendet die tatsächliche Anzahl, die in der ersten Spalte des Recordsets gespeichert ist.
Das obige ist der detaillierte Inhalt vonWarum gibt COUNT(*) in MySQLi 1 zurück, wenn die Tabelle mehr Zeilen hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!