Mengapa mysqli_num_rows() Mengembalikan 0 dalam PHP
Dalam MySQLi, melaksanakan pertanyaan tanpa mengambil keputusan terlebih dahulu boleh menyebabkan pengiraan baris yang salah. Apabila menghadapi isu ini dengan mysqli_num_rows(), pertimbangkan perkara berikut:
Contoh dan Penjelasan Kod
Pertimbangkan coretan kod di bawah:
$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);
Dalam kod ini, mysqli_num_rows() sentiasa mengembalikan 0 kerana hasilnya belum belum diambil.
Penyelesaian: Gunakan mysqli_stmt::store_result()
Sebelum memanggil mysqli_num_rows(), anda perlu memanggil mysqli_stmt::store_result() untuk menyimpan hasil pertanyaan dalam penimbal. Proses ini membolehkan pengiraan 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);
Ingat untuk menyemak dokumentasi untuk mysqli_num_rows() kerana butiran sedemikian biasanya disebut dalam bahagian penerangan.
Atas ialah kandungan terperinci Mengapakah `mysqli_num_rows()` Mengembalikan 0 Selepas `mysqli_stmt::execute()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!