Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Membetulkan Ralat 'mysqli_stmt::bind_param() Jangka Rujukan'?

Bagaimana untuk Membetulkan Ralat 'mysqli_stmt::bind_param() Jangka Rujukan'?

Barbara Streisand
Lepaskan: 2024-12-01 17:25:14
asal
525 orang telah melayarinya

How to Fix the

Menyelesaikan Ralat "mysqli bind_param() Jangka Rujukan"

Apabila menghadapi ralat "Parameter 3 to mysqli_stmt::bind_param() dijangka menjadi rujukan, nilai yang diberikan," ia menunjukkan bahawa tatasusunan $params tidak dikonfigurasikan dengan betul untuk mengikat. Untuk menyelesaikan masalah ini, adalah penting untuk memahami keperluan untuk mysqli_stmt_bind_param().

Ralat timbul kerana mysqli_stmt_bind_param() menjangkakan parameter akan diluluskan melalui rujukan. Walau bagaimanapun, tatasusunan $params mengandungi salinan nilai, yang bukan rujukan. Untuk membetulkannya, anda mesti menukar nilai dalam $params kepada rujukan menggunakan kaedah berikut:

function refValues($arr) {
    if (strnatcmp(phpversion(), '5.3') >= 0) { // Reference is required for PHP 5.3+
        $refs = array();
        foreach ($arr as $key => $value)
            $refs[$key] = &$arr[$key];
        return $refs;
    }
    return $arr;
}
Salin selepas log masuk

Setelah tatasusunan $params mengandungi rujukan kepada nilai, anda boleh mengikat parameter dengan betul menggunakan yang berikut kod:

PDO:

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1, "2", "3", "4");
$param_type = "isss";
$sql_stmt = mysqli_prepare($mysqli, $query);
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $param_type), refValues($params)));
mysqli_stmt_execute($sql_stmt);
Salin selepas log masuk

OOP:

$insert_stmt = $mysqli->prepare($query);
array_unshift($params, $param_type);
call_user_func_array(array($insert_stmt, 'bind_param'), refValues($params));
$insert_stmt->execute();
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'mysqli_stmt::bind_param() Jangka Rujukan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan