Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan 'Panggil ke fungsi ahli bind_param() pada bukan objek' dan 'mysqli_fetch_array(): Argumen #1 mestilah jenis mysqli_result' Ralat dalam MySQLi?
Penyebaran Ralat MySQL: Menyelesaikan Isu mysqli_fetch_array() dan Bind_param()
Masalahnya:
Ralat seperti "Panggil ke fungsi ahli bind_param() pada bukan objek" dan "mysqli_fetch_array(): Argumen #1 mestilah jenis mysqli_result" boleh timbul apabila menggunakan MySQLi dalam persekitaran tertentu. Isu ini biasanya berpunca daripada kekurangan konfigurasi untuk pelaporan ralat MySQL dalam PHP.
Cara Menyelesaikan:
1. Dayakan Pelaporan Ralat MySQL
Mulakan dengan mendayakan pelaporan ralat MySQL dalam PHP dengan menambah baris berikut sebelum mewujudkan sambungan MySQLi:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Konfigurasi ini akan memastikan bahawa sebarang ralat MySQL adalah disebarkan sebagai pengecualian PHP, menjadikannya kelihatan dan boleh diambil tindakan.
2. Gunakan Penyata Disediakan
Gantikan sebarang pembolehubah PHP eksplisit dalam pertanyaan SQL dengan tanda soal dan laksanakan pertanyaan menggunakan pernyataan yang disediakan. Pendekatan ini membantu mengelakkan ralat sintaks dan kelemahan suntikan.
// Example using MySQLi prepared statements $mysqli = new mysqli(...) or throw new Exception('Could not connect to DB'); $query = 'SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?'; $stmt = $mysqli->prepare($query); $stmt->bind_param('i', $cur_id); $stmt->execute(); $stmt->bind_result($uid, $desc);
Petua Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan 'Panggil ke fungsi ahli bind_param() pada bukan objek' dan 'mysqli_fetch_array(): Argumen #1 mestilah jenis mysqli_result' Ralat dalam MySQLi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!