Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Fungsi `mysqli_query()` Saya Menerima Nilai Null Daripada Objek Sambungan MySQLi?

Mengapa Fungsi `mysqli_query()` Saya Menerima Nilai Null Daripada Objek Sambungan MySQLi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-28 00:26:10828semak imbas

Why Does My `mysqli_query()` Function Receive a Null Value Instead of a MySQLi Connection Object?

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

Dalam usaha anda untuk mencipta CMS tersuai , anda mungkin mengalami mesej ralat yang ditakuti: "Amaran: mysqli_query() mengharapkan parameter 1 menjadi MySQLi, batal diberikan." Masalah yang mengecewakan ini sering timbul daripada salah faham mengenai skop pembolehubah dalam fungsi PHP.

Punca Ralat

Ralat menunjukkan bahawa fungsi getPosts() anda sedang mencuba untuk mengakses pembolehubah $con, yang menyimpan objek sambungan MySQLi anda, tetapi ia tidak boleh diakses dalam skop fungsi itu. Ini kerana $con ditakrifkan di luar fungsi getPosts().

Penyelesaian: Melepasi Sambungan sebagai Kebergantungan

Untuk menyelesaikan isu ini, anda perlu lulus objek sambungan ke fungsi getPosts() sebagai kebergantungan. Dengan melakukan ini, fungsi boleh mengakses sambungan dan melaksanakan operasi pangkalan data yang diperlukan.

function getPosts(mysqli $con) {
    // Code to query the database using $con
}

Mencegah Ralat Selanjutnya

Untuk meminimumkan isu yang berpotensi, pertimbangkan untuk menggunakan perkara berikut kod untuk mengendalikan ralat sambungan dan membuang pengecualian:

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

getPosts($con);

Tambahan Petua

  • Gunakan Objek mysqli Secara Terus: Elakkan menggunakan mysqli_query() dan pilih kaedah objek mysqli secara langsung, seperti $con->query().
  • Kendalikan Pengecualian: Ingat untuk mengendalikan pengecualian yang dilemparkan oleh objek mysqli menggunakan blok try...catch untuk memberikan mesej ralat yang bermakna.
  • Buang Sambungan: Setelah anda selesai dengan sambungan, tutupnya menggunakan $con ->kaedah tutup() untuk melepaskan sumber.

Atas ialah kandungan terperinci Mengapa Fungsi `mysqli_query()` Saya Menerima Nilai Null Daripada Objek Sambungan MySQLi?. 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