Heim > Artikel > Backend-Entwicklung > Warum gibt die MySQLi-Methode „query()' eine unerwartete Zeilenanzahl zurück, wenn sie „COUNT(*)' verwendet?
Die Abfragemethode von MySQLi liefert unerwartete Zeilenanzahlen
Beim Versuch, die Zeilenanzahl einer MySQL-Tabelle mithilfe der Funktion COUNT(*) abzurufen und Bei Verwendung der query()-Methode des MySQLi-Objekts kann es zu einem unerwarteten Ergebnis kommen, bei dem die zurückgegebene Zeilenanzahl immer 1 beträgt. Dies kann vom korrekten Ergebnis abweichen, wenn dieselbe Abfrage mit Tools wie phpMyAdmin ausgeführt wird.
Verstehen das Problem
Die Eigenschaft num_rows des MySQLi_Result-Objekts spiegelt die Anzahl der Zeilen in der Ergebnismenge wider, die von der ausgeführten Abfrage zurückgegeben wird. Bei Verwendung der Funktion COUNT(*) ist das Ergebnis jedoch eine einzelne Zeile, die den Zählwert enthält, und nicht mehrere Zeilen wie in regulären Abfrageergebnissen.
Der richtige Ansatz
Um mit MySQLi den korrekten Zählwert zu erhalten, müssen Sie die einzelne Ergebniszeile aus dem MySQLi_Result-Objekt abrufen und den Zählwert aus dieser Zeile abrufen. Dies kann mit der Methode fetch_row() erreicht werden, die ein Array von Spaltenwerten aus der ersten Zeile im Ergebnissatz zurückgibt.
Hier ist ein Beispiel, das den richtigen Ansatz demonstriert:
$result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); $count = $row[0]; echo 'Row count: ', $count;
Dieser Code ruft den Zählwert aus der ersten Zeile ab und gibt ihn aus.
Das obige ist der detaillierte Inhalt vonWarum gibt die MySQLi-Methode „query()' eine unerwartete Zeilenanzahl zurück, wenn sie „COUNT(*)' verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!