Amaran: mysqli_query() menjangkakan parameter 1 adalah mysqli, null diberikan
Ralat ini timbul apabila cuba melaksanakan pertanyaan MySQL menggunakan mysqli_query (), tetapi parameter yang disediakan untuk objek sambungan bukanlah objek MySQLi yang sah. Fungsi mysqli_query() menjangkakan parameter pertama sebagai contoh kelas mysqli.
Dalam coretan kod yang disediakan, ralat mungkin disebabkan oleh sebab berikut:
Isu Skop
Objek sambungan mysqli $con, yang diisytiharkan dalam global skop, tidak boleh diakses dalam fungsi getPosts(). Ini menyebabkan nilai nol dihantar sebagai parameter pertama kepada mysqli_query(), yang membawa kepada ralat.
Penyelesaian:
Untuk menyelesaikan isu ini, anda boleh secara eksplisit lulus objek sambungan ke fungsi getPosts() sebagai parameter. Berikut ialah kod yang diubah suai:
function getPosts(mysqli $con) { $query = mysqli_query($con, "SELECT * FROM Blog"); // ... Rest of the code remains the same }
Sekarang, apabila anda memanggil fungsi getPosts(), pastikan anda menghantar objek sambungan sebagai hujah.
Selain itu, ia merupakan amalan yang baik untuk mendayakan pelaporan ralat dan mengendalikan isu sambungan pangkalan data dengan anggun. Berikut ialah contoh:
// Enable error reporting mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // Establish database connection $con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx"); // Check connection status if (!$con) { throw new Exception('Failed to connect to MySQL: ' . mysqli_connect_error()); } // Call the getPosts() function with the connection object getPosts($con);
Atas ialah kandungan terperinci Mengapakah `mysqli_query()` Mengembalikan 'menjangkakan parameter 1 menjadi mysqli, null diberikan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!