Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Penyata Disediakan MySQLi dengan Operator IN dengan betul?
MySQLi Disediakan Penyata dengan Operator IN
Dalam pertanyaan pangkalan data, operator IN membenarkan anda mencari nilai tertentu dalam senarai. Apabila menggunakan pernyataan MySQLi yang disediakan dengan operator IN, adalah penting untuk mengikuti sintaks yang betul untuk memastikan hasil yang tepat.
Dalam kod yang anda berikan, anda menghadapi masalah di mana pertanyaan tidak mengembalikan hasil, walaupun wujud padanan data dalam pangkalan data. Ini mungkin disebabkan oleh ralat dalam langkah penyediaan.
Penyelesaian, seperti yang anda temui, melibatkan secara eksplisit lulus setiap parameter dengan rujukan menggunakan fungsi call_user_func_array(). Ini kerana kaedah bind_param() menjangkakan parameter dihantar terus mengikut nilai.
Dengan menghantar parameter melalui rujukan, MySQLi mengambil nilai dengan tepat dan melaksanakan pertanyaan dengan betul. Berikut ialah contoh kod yang diubah suai:
$lastnames = array('braun', 'piorkowski', 'mason', 'nash'); $arParams = array(); foreach ($lastnames as $key => $value) { $arParams[] = &$lastnames[$key]; } $count_params = count($arParams); $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); $data_res->execute();
Dengan membuat pengubahsuaian ini, pernyataan yang disediakan akan melaksanakan seperti yang diharapkan dan mengembalikan hasil yang diingini.
Atas ialah kandungan terperinci Bagaimana Menggunakan Penyata Disediakan MySQLi dengan Operator IN dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!