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
Linda Hamiltonasal
2024-12-17 17:06:15651semak imbas

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);

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);

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!

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