Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `mysqli_query()` Mengembalikan 'Amaran: mysqli_query() menjangkakan parameter 1 adalah MySQLi, batal diberikan'?

Mengapakah `mysqli_query()` Mengembalikan 'Amaran: mysqli_query() menjangkakan parameter 1 adalah MySQLi, batal diberikan'?

DDD
Lepaskan: 2024-12-18 17:12:11
asal
590 orang telah melayarinya

Why Does `mysqli_query()` Return

Memahami "Amaran: mysqli_query() menjangkakan parameter 1 adalah MySQLi, null diberikan dalam" Ralat

Dalam percubaan anda untuk mencipta tersuai CMS, anda mengalami mesej ralat berikut:

"Amaran: mysqli_query() menjangkakan parameter 1 adalah MySQLi, null diberikan dalam"

Punca Ralat

Ralat ini menunjukkan bahawa fungsi mysqli_query(), yang melaksanakan pertanyaan SQL , mengharapkan objek MySQLi sebagai parameter pertamanya. Walau bagaimanapun, dalam fungsi getPosts() anda, anda menghantar nilai nol dan bukannya objek MySQLi.

Penyelesaian

Penyelesaian kepada isu ini adalah untuk memastikan bahawa Objek $con MySQLi berada dalam skop fungsi getPosts(). Dalam kod anda, $con ditakrifkan dalam skop global, tetapi ia tidak boleh diakses dalam fungsi.

Meluluskan Objek MySQLi sebagai Kebergantungan

Salah satu cara untuk alamat ini adalah untuk menghantar objek MySQLi ke fungsi getPosts() sebagai kebergantungan. Begini cara anda boleh melakukannya:

function getPosts(mysqli $con) {
    // etc
}
Salin selepas log masuk

Dengan menjadikan objek MySQLi sebagai parameter fungsi, anda memastikan ia tersedia dalam skop fungsi dan boleh digunakan oleh mysqli_query().

Syor Tambahan

Selain menyelesaikan isu skop, pertimbangkan untuk melaksanakan pengesyoran berikut:

  • Kendalikan ralat dan kegagalan sambungan dengan menggunakan mysqli_report() untuk menetapkan pilihan pelaporan ralat.
  • Hentikan pelaksanaan skrip jika ralat sambungan atau ralat pertanyaan berlaku menggunakan mysqli::error().

Berikut ialah contoh cara untuk melaksanakan pengesyoran ini:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions
$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");

if (!$con) {
    throw new Exception("Failed to connect to MySQL: " . mysqli_connect_error());
}

getPosts($con);
Salin selepas log masuk

Dengan melaksanakan pengesyoran ini, anda boleh memastikan keteguhan dan kebolehpercayaan CMS tersuai anda.

Atas ialah kandungan terperinci Mengapakah `mysqli_query()` Mengembalikan 'Amaran: mysqli_query() menjangkakan parameter 1 adalah MySQLi, batal diberikan'?. 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