PHP & MySQL: Menyelesaikan "mysqli_num_rows() menjangkakan parameter 1 menjadi mysqli_result, boolean diberi" Ralat
Ralat "mysqli_num_rows() menjangkakan parameter 1 ialah mysqli_result, boolean diberikan" menunjukkan bahawa input yang diberikan kepada fungsi mysqli_num_rows() bukan set hasil yang sah. Ralat ini sering ditemui apabila argumen input bukan hasil daripada pelaksanaan pertanyaan yang berjaya.
Dalam kes khusus ini, ralat berlaku dalam baris kod PHP berikut:
if (mysqli_num_rows($dbc) == 0) {
Di sini, pembolehubah $dbc digunakan sebagai input kepada mysqli_num_rows(), tetapi ia mengembalikan palsu kerana pertanyaan yang dilaksanakan pada $dbc mengandungi ralat:
$dbc = mysqli_query($mysqli,"SELECT users.*, profile.* FROM users INNER JOIN contact_info ON contact_info.user_id = users.user_id WHERE users.user_id=3");
Ralat dalam pertanyaan ialah kata kunci JOIN yang hilang antara pengguna dan jadual profil:
SELECT users.*, profile.* --You do not join with profile anywhere. FROM users INNER JOIN contact_info ON contact_info.user_id = users.user_id WHERE users.user_id=3");
Untuk membetulkan isu, anda harus mengubah suai pertanyaan seperti berikut:
$dbc = mysqli_query($mysqli,"SELECT users.*, profile.* FROM users INNER JOIN profile ON contact_info.user_id = users.user_id WHERE users.user_id=3");
Dengan membetulkan pertanyaan, fungsi mysqli_num_rows() kini akan menerima set hasil yang sah dan boleh untuk menentukan sama ada bilangan baris dalam keputusan adalah sifar.
Atas ialah kandungan terperinci Mengapakah `mysqli_num_rows()` Mengembalikan Boolean Daripada Set Hasil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!