首頁 >資料庫 >mysql教程 >如何正確使用 MySQLi 預先準備語句和 IN 運算子?

如何正確使用 MySQLi 預先準備語句和 IN 運算子?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-29 14:37:12704瀏覽

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

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn