使用 IN 運算子的 MySQLi 準備語句
在資料庫查詢中,IN 運算子可讓您在清單中搜尋特定值。當使用帶有 IN 運算子的 MySQLi 準備好的語句時,遵循正確的語法以確保準確的結果至關重要。
在您提供的程式碼中,您遇到了查詢不傳回結果的問題,儘管存在符合資料庫中的資料。這可能是由於準備步驟中的錯誤造成的。
如您所發現的,解決方案包括使用 call_user_func_array() 函數透過引用明確傳遞每個參數。這是因為 bind_param() 方法期望參數直接以值傳遞。
透過按引用傳遞參數,MySQLi 可以準確地檢索值並正確執行查詢。以下是修改後的程式碼範例:
$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();
透過進行此修改,準備好的語句將如預期執行並傳回所需的結果。
以上是如何正確使用 MySQLi 預先準備語句和 IN 運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!