Rumah > pangkalan data > tutorial mysql > Bagaimana Menggunakan Operator IN dengan Betul dengan Penyata Disediakan MySQLi dan Pelbagai Parameter?

Bagaimana Menggunakan Operator IN dengan Betul dengan Penyata Disediakan MySQLi dan Pelbagai Parameter?

Linda Hamilton
Lepaskan: 2024-12-17 17:06:15
asal
647 orang telah melayarinya

How to Correctly Use the IN Operator with MySQLi Prepared Statements and Multiple Parameters?

Menggunakan Operator IN dengan Penyata Disediakan MySQLi

Apabila menggunakan operator IN dengan operator IN dalam pernyataan yang disediakan MySQLi, adalah penting untuk memformat dengan betul parameter. Kod awal yang disediakan:

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
Salin selepas log masuk

melibatkan ralat kerana $in_statement ialah rentetan dan bukannya tatasusunan nilai. Untuk menyelesaikan isu ini, pendekatan alternatif menggunakan fungsi call_user_func_array dibentangkan:

$int = str_repeat('i', $count_params);
array_unshift($arParams, $int);

$q = array_fill(0, $count_params, '?');
$params = implode(',', $q);

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ('.$params.')');
call_user_func_array(array($data_res, 'bind_param'), $arParams);
Salin selepas log masuk

Dalam kod yang diubah suai ini:

  • $count_params menentukan bilangan parameter yang akan diluluskan.
  • str_repeat('i', $count_params) mencipta rentetan aksara i yang sama dengan nombor daripada parameter, mewakili jenis data untuk setiap parameter.
  • array_unshift($arParams, $int) menambahkan rentetan jenis data pada tatasusunan $arParams.
  • array_fill(0, $count_params, ' ?') menjana rentetan tanda soal untuk klausa IN.
  • call_user_func_array digunakan untuk mengikat berbilang parameter secara serentak, menghantar tatasusunan $arParams sebagai hujah.

Atas ialah kandungan terperinci Bagaimana Menggunakan Operator IN dengan Betul dengan Penyata Disediakan MySQLi dan Pelbagai Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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