Rumah > pembangunan bahagian belakang > tutorial php > Mengapa mysqli_stmt::bind_param() Membuang 'Parameter ... dijangka menjadi rujukan, nilai diberikan'?

Mengapa mysqli_stmt::bind_param() Membuang 'Parameter ... dijangka menjadi rujukan, nilai diberikan'?

Susan Sarandon
Lepaskan: 2024-12-05 09:11:15
asal
694 orang telah melayarinya

Why Does mysqli_stmt::bind_param() Throw

mysqli bind_param() Ralat: Melepasi Nilai Daripada Rujukan

Ralat "Parameter 3 kepada mysqli_stmt::bind_param() dijangka akan rujukan, nilai yang diberikan" timbul apabila mysqli_stmt::bind_param() menghantar tatasusunan nilai dan bukannya tatasusunan rujukan kepada nilai tersebut.

Kod PDO

Dalam kod PDO yang disediakan:

$params = array(1,"2","3","4");
Salin selepas log masuk

Tatasusunan $params mengandungi nilai dan bukannya rujukan kepada nilai tersebut. Untuk membetulkannya, gunakan & untuk membuat rujukan:

$params = array(1,&"2", &"3", &"4");
Salin selepas log masuk

Kod OOP

Begitu juga, dalam kod OOP:

array_unshift($params, $param_type);
Salin selepas log masuk

Baris ini menambah rentetan $param_type ke permulaan tatasusunan $params, tetapi ia tidak membuat rujukan kepada nilai parameter. Untuk membuat rujukan, gunakan aksara &:

array_unshift($params, $param_type);
foreach ($params as $key => $value) {
    $params[$key] =& $value;
}
Salin selepas log masuk

Penyelesaian Alternatif Menggunakan Operator Spread (PHP 5.6 )

Dalam PHP versi 5.6 dan ke atas, anda boleh menggunakan operator spread (... ) untuk menghantar tatasusunan $params sebagai hujah individu tanpa perlu membuat rujukan secara manual:

mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

$insert_stmt->bind_param($param_type, ...$params);
Salin selepas log masuk

Dengan lulus rujukan atau menggunakan operator spread, anda boleh memastikan bahawa mysqli_stmt::bind_param() menerima tatasusunan rujukan kepada nilai parameter, menyelesaikan ralat.

Atas ialah kandungan terperinci Mengapa mysqli_stmt::bind_param() Membuang 'Parameter ... dijangka menjadi rujukan, nilai diberikan'?. 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