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
Freigeben: 2024-12-05 10:53:11
Original
355 Leute haben es durchsucht

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage