Rumah > pembangunan bahagian belakang > tutorial php > Mengapa mysqli_stmt::num_rows Mengembalikan 0, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa mysqli_stmt::num_rows Mengembalikan 0, dan Bagaimana Saya Boleh Membetulkannya?

DDD
Lepaskan: 2024-12-11 16:54:15
asal
895 orang telah melayarinya

Why Does mysqli_stmt::num_rows Return 0, and How Can I Fix It?

Memahami Misteri mysqli_stmt::num_rows Mengembalikan 0

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.

Pernyataan Masalah: Nilai Sifar Dipulangkan

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.

Penyelesaian: Kuasa mysqli_stmt::store_result()

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:

  • Tiada mysqli_stmt::store_result() Panggil: Jika fungsi mysqli_stmt::store_result() tidak dipanggil sebelum mengakses mysqli_stmt::num_rows, fungsi akan mengembalikan 0, walaupun terdapat hasil baris.

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

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.

Conclusion

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan