Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „mysqli_num_rows()' nach „mysqli_stmt::execute()' 0 zurück?
Warum mysqli_num_rows() in PHP 0 zurückgibt
In MySQLi kann das Ausführen von Abfragen ohne vorheriges Abrufen von Ergebnissen zu falschen Zeilenzahlen führen. Wenn dieses Problem mit mysqli_num_rows() auftritt, beachten Sie Folgendes:
Codebeispiel und Erklärung
Beachten Sie den folgenden Codeausschnitt:
$mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id=? ORDER BY page_order ASC;"); $stmt->bind_param('s', $data->id); $stmt->execute(); $num_of_rows = $stmt->num_rows; // Error! $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent); while ($stmt->fetch()) { //... } echo($num_of_rows);
In diesem Code gibt mysqli_num_rows() immer 0 zurück, da die Ergebnisse nicht abgerufen wurden noch nicht.
Lösung: Verwenden Sie mysqli_stmt::store_result()
Bevor Sie mysqli_num_rows() aufrufen, müssen Sie mysqli_stmt::store_result() aufrufen, um die Abfrage zu speichern ergibt einen Puffer. Dieser Prozess ermöglicht das Zählen von rowCount:
$mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id=? ORDER BY page_order ASC;"); $stmt->bind_param('s', $data->id); $stmt->execute(); $stmt->store_result(); // Fetches results into a memory buffer $num_of_rows = $stmt->num_rows; $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent); while ($stmt->fetch()) { //... } echo($num_of_rows);
Denken Sie daran, die Dokumentation für mysqli_num_rows() zu überprüfen, da solche Details normalerweise im Beschreibungsabschnitt erwähnt werden.
Das obige ist der detaillierte Inhalt vonWarum gibt „mysqli_num_rows()' nach „mysqli_stmt::execute()' 0 zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!