Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `mysqli_query()` mengembalikan ralat 'Amaran: mysqli_query() menjangkakan parameter 1 adalah mysqli, null given' ralat?

Mengapakah `mysqli_query()` mengembalikan ralat 'Amaran: mysqli_query() menjangkakan parameter 1 adalah mysqli, null given' ralat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-05 00:53:14258semak imbas

Why does `mysqli_query()` return a

Amaran: Memahami Ralat Parameter mysqli_query()

Apabila menggunakan mysqli_query() dalam PHP, adalah penting untuk memastikan bahawa parameter pertama ialah objek mysqli yang sah mewakili sambungan pangkalan data. Walau bagaimanapun, jika anda menghadapi ralat yang menyatakan "Amaran: mysqli_query() menjangkakan parameter 1 ialah mysqli, null diberikan dalam," ia menunjukkan bahawa parameter pertama yang dihantar kepada fungsi itu bukan objek mysqli.

Memeriksa Kod

Dalam kod yang anda berikan, anda mempunyai fungsi yang dipanggil getPosts(). Fungsi ini cuba menanyakan jadual pangkalan data bernama Blog. Walau bagaimanapun, dalam panggilan mysqli_query() dalam getPosts(), parameter pertama tidak diluluskan secara eksplisit. Akibatnya, PHP menganggap nilai $con, yang diisytiharkan di luar fungsi, sebagai parameter pertama. Tetapi, $con tidak berada dalam skop getPosts() dan dengan itu mengembalikan null.

Menyelesaikan Ralat

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

  1. **Globalisasikan Pembolehubah $con:** Anda boleh menjadikan pembolehubah $con global di dalam getPosts() menggunakan $con global; pengisytiharan. Ini akan memberitahu PHP untuk mencari $con di luar fungsi, menjadikannya boleh diakses dalam getPosts().
  2. **Pass Pembolehubah $con sebagai Parameter:** Pendekatan yang lebih baik adalah dengan lulus objek $con sebagai parameter kepada fungsi getPosts(). Ini memastikan getPosts() mempunyai akses terus kepada sambungan pangkalan data, menghapuskan keperluan untuk skop global.

Contoh:

function getPosts(mysqli $con) {
    // ... same code as before
}

// Connect to the database
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");
// Call getPosts() with the connection as a parameter
getPosts($con);

Pengesyoran Tambahan

Adalah dinasihatkan untuk mengendalikan sebarang kemungkinan ralat yang mungkin berlaku semasa operasi pangkalan data. Anda boleh mendayakan pelaporan ralat secara eksplisit seperti berikut:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions

Ini akan membuang pengecualian jika berlaku sebarang ralat, membolehkan anda mengambil tindakan yang sewajarnya dalam kod anda.

Atas ialah kandungan terperinci Mengapakah `mysqli_query()` mengembalikan ralat 'Amaran: mysqli_query() menjangkakan parameter 1 adalah mysqli, null given' ralat?. 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