Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `mysqli_num_rows()` Mengembalikan 0 Selepas `mysqli_stmt::execute()`?

Mengapakah `mysqli_num_rows()` Mengembalikan 0 Selepas `mysqli_stmt::execute()`?

Susan Sarandon
Lepaskan: 2024-12-05 10:53:11
asal
357 orang telah melayarinya

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

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan