Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „mysqli_num_rows()' nach „mysqli_stmt::execute()' 0 zurück?

Warum gibt „mysqli_num_rows()' nach „mysqli_stmt::execute()' 0 zurück?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 10:53:11356Durchsuche

Why Does `mysqli_num_rows()` Return 0 After `mysqli_stmt::execute()`?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn