Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyelesaikan Ralat 'Dijangka menjadi Rujukan' dalam mysqli bind_param()?

Bagaimana untuk Menyelesaikan Ralat 'Dijangka menjadi Rujukan' dalam mysqli bind_param()?

Susan Sarandon
Susan Sarandonasal
2024-12-13 10:57:15171semak imbas

How to Solve the

Mengendalikan Ralat "Dijangka Menjadi Rujukan" dalam mysqli bind_param()

Mesej ralat "Parameter 3 kepada mysqli_stmt::bind_param( ) dijangka menjadi rujukan, nilai yang diberikan" timbul apabila mengikat nilai kepada yang disediakan kenyataan. Untuk menyelesaikan isu ini, nilai yang diberikan mestilah merujuk kepada pembolehubah sebenar dan bukannya nilai itu sendiri.

Dalam coretan kod yang disediakan, tatasusunan $params mengandungi nilai yang bukan rujukan. Untuk mengikat nilai dengan betul, anda boleh menggunakan pendekatan berikut:

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$param_type = "isss";

// PHP 7+
$sql_stmt = mysqli_prepare($mysqli, $query);
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

// PHP 5.6 - 7.0
$sql_stmt = mysqli_prepare($mysqli, $query);
$arr = array($sql_stmt, $param_type);
foreach ($params as $param) {
    $arr[] = &$param;
}
call_user_func_array('mysqli_stmt_bind_param', $arr);

mysqli_stmt_execute($sql_stmt);

Penggunaan Rujukan

Dalam PHP 5.3 dan ke bawah, rujukan tidak diperlukan untuk nilai mengikat kepada pernyataan yang disediakan. Walau bagaimanapun, bermula dari PHP 5.4, rujukan adalah wajib. Sebab perubahan ini adalah untuk mengelakkan penyalinan pembolehubah yang tidak diingini dan kemungkinan kebocoran memori.

Dengan menggunakan rujukan, proses pengikatan menjadi lebih cekap kerana nilai terikat diubah suai secara langsung, menghapuskan keperluan untuk tugasan pembolehubah tambahan.

Kesimpulan

Ingat bahawa apabila menggunakan mysqli bind_param() dengan nilai yang bukan rujukan, anda perlu menghantarnya sebagai rujukan atau menggunakan pendekatan alternatif untuk mengikat nilai dengan betul. Ini memastikan pelaksanaan pertanyaan SQL anda yang cekap dan bebas ralat.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Dijangka menjadi Rujukan' dalam mysqli bind_param()?. 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