Dalam dunia interaksi pangkalan data dinamik, bukan perkara biasa untuk menghadapi masalah dengan mendapatkan bilangan baris yang betul daripada pertanyaan MySQL. Isu ini boleh timbul secara khusus apabila menggunakan fungsi mysqli_stmt::num_rows.
Pembangun sering menghadapi kes di mana mysqli_stmt:: fungsi secara berterusan mengembalikan 0 walaupun terdapat baris hasil selepas melaksanakan pertanyaan. Percanggahan ini boleh menjadi agak mengecewakan, menghalang pengambilan dan pemprosesan data yang tepat.
Kunci kepada penyelesaian isu ini terletak pada memahami tingkah laku mysqli_stmt::num_rows. Fungsi ini tidak mengira bilangan baris secara automatik dalam set hasil; sebaliknya, ia mengembalikan nilai berdasarkan keadaan tertentu:
Untuk menyelesaikan masalah ini, pembangun mesti memanggil mysqli_stmt::store_result() secara eksplisit selepas melaksanakan pertanyaan dan sebelum cuba menggunakan mysqli_stmt::num_rows. Berikut ialah coretan kod yang dikemas kini yang menggabungkan langkah perlu ini:
if ($stmt = $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(); // Added this line $num_of_rows = $stmt->num_rows; $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent); while ($stmt->fetch()) { // code } echo($num_of_rows); $stmt->close(); }
Dengan memasukkan mysqli_stmt::store_result(), pelayan MySQL diarahkan untuk menyimpan set hasil dalam memori sisi klien, menjadikannya tersedia untuk pemprosesan seterusnya. Ini memastikan mysqli_stmt::num_rows boleh mengira bilangan baris dengan tepat dalam set hasil yang disimpan, mengembalikan nilai yang betul.
Memahami kepentingan mysqli_stmt::store_result() apabila menggunakan mysqli_stmt::num_rows adalah penting untuk pembangun yang bekerja dengan pangkalan data MySQL. Dengan memanggil mysqli_stmt::store_result() secara eksplisit, pembangun boleh memastikan bahawa mereka memperoleh kiraan baris yang tepat, memperkasakan mereka untuk mengendalikan data pangkalan data dengan berkesan dan cekap.
Atas ialah kandungan terperinci Mengapa mysqli_stmt::num_rows Mengembalikan 0, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!