Rumah >pembangunan bahagian belakang >tutorial php >Amaran PHP: mysql_num_rows() mengharapkan penyelesaian parameter

Amaran PHP: mysql_num_rows() mengharapkan penyelesaian parameter

PHPz
PHPzasal
2023-06-24 22:07:431679semak imbas

PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas digunakan untuk pembangunan web, di mana banyak aplikasi web (seperti WordPress) bergantung pada pangkalan data MySQL untuk menyimpan dan mendapatkan semula data. Walau bagaimanapun, apabila menggunakan fungsi mysql_num_rows(), kadangkala amaran berikut muncul:

PHP Amaran: mysql_num_rows() menjangkakan parameter 1 sebagai sumber, boolean diberikan dalam...

Dalam artikel ini, kita akan membincangkan isu ini Sebabnya dan bagaimana untuk memperbaikinya.

Apakah fungsi mysql_num_rows()? Fungsi

mysql_num_rows() digunakan untuk mendapatkan bilangan baris yang diambil daripada pertanyaan MySQL. Ia menerima sumber set hasil sebagai parameter dan mengembalikan bilangan baris atau palsu jika ralat berlaku. Berikut ialah contoh:

$result = mysql_query("SELECT * FROM mytable");
$num_rows = mysql_num_rows($result);
echo "Rows: ".$num_rows;

Ini akan mengembalikan keputusan yang diambil daripada jadual mytable Bilangan baris yang dicapai. Walau bagaimanapun, jika set hasil bukan sumber, amaran akan muncul:

PHP Amaran: mysql_num_rows() menjangkakan parameter 1 sebagai sumber, boolean diberikan dalam...

Mengapa amaran "boolean diberi" muncul?

Masalah ini biasanya disebabkan oleh kegagalan pertanyaan SQL. Apabila menggunakan fungsi mysql_query(), ia mungkin mengembalikan palsu, menunjukkan bahawa pertanyaan itu gagal. Jika kita menghantar hasil ini sebagai parameter kepada fungsi mysql_num_rows(), ia akan ditafsirkan sebagai nilai boolean dan bukannya sumber set hasil yang dijangkakan. Oleh itu, amaran "Amaran PHP: mysql_num_rows() menjangkakan parameter 1 sebagai sumber, boolean diberikan dalam ..." muncul pada konsol.

Bagaimana untuk menyelesaikan amaran "diberikan boolean"?

Untuk menyelesaikan masalah ini, kita perlu memastikan bahawa pertanyaan SQL berjaya sebelum menggunakan fungsi mysql_num_rows(). Kita boleh menyemak hasil fungsi mysql_query() seperti ini:

$result = mysql_query("SELECT * FROM mytable");
if($result){
$num_rows = mysql_num_rows($result);
echo "Rows: " .$num_rows;
}

Ini akan memastikan bahawa fungsi mysql_num_rows() hanya digunakan selepas pertanyaan berjaya dilaksanakan.

Cara lain ialah menggunakan sambungan MySQLi atau PDO (Objek Data PHP) untuk menyambung dan membuat pertanyaan pangkalan data MySQL. Sambungan MySQLi menyediakan kaedah yang lebih baik untuk mengakses pangkalan data MySQL, manakala PDO boleh digunakan untuk menyambung dan menanyakan jenis pangkalan data yang berbeza (seperti MySQL, PostgreSQL, SQLite).

Berikut ialah contoh menggunakan MySQLi:

$conn = mysqli_connect("localhost","username","password","dbname");
if (!$conn) {
die("Could not connect: " .mysqli_error($conn));
}

$result = mysqli_query($conn,"SELECT * FROM mytable");
if($result){
$num_rows = mysqli_num_rows($result);
echo "Rows : ".$num_rows;
}

Selain itu, PDO juga menyediakan kaedah akses pangkalan data yang mudah digunakan dan selamat:

$conn = new PDO("mysql:host=localhost;dbname=myDB","username" ,"kata laluan");
$result = $conn->query("SELECT * FROM mytable");
if($result){
$num_rows = $result->rowCount();
echo "Rows: ".$num_rows;
}

Summary

Amaran "boolean given" apabila menggunakan fungsi mysql_num_rows() biasanya disebabkan oleh pertanyaan SQL yang gagal. Untuk menyelesaikan masalah ini, kita perlu memastikan bahawa pertanyaan berjaya sebelum menggunakan fungsi mysql_num_rows(), atau menggunakan kaedah akses pangkalan data MySQL yang berbeza, seperti sambungan MySQLi atau PDO.

Atas ialah kandungan terperinci Amaran PHP: mysql_num_rows() mengharapkan penyelesaian parameter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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