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

如何正確使用 IN 運算子與 MySQLi 預先準備語句和多個參數?

Linda Hamilton
發布: 2024-12-17 17:06:15
原創
676 人瀏覽過

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

在MySQLi 準備語句中使用IN 運算子

在MySQLi 準備語句中使用IN 運算子和IN 運算子時,正確的運算子時,正確的運算子時,正確的運算子格式至關重要參數。提供的初始代碼:

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
登入後複製

涉及錯誤,因為 $in_statement 是字串而不是值數組。為了解決此問題,提出了使用 call_user_func_array 函數的替代方法:

$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);
登入後複製

在此修改後的程式碼中:

  • $count_params 確定要傳遞的參數數量。
  • str_repeat('i', $count_params) 建立一個包含 i 個字元的字串,其數量等於參數,表示每個參數的資料類型。
  • array_unshift($arParams, $int) 將資料型別字串加入 $arParams 陣列中。
  • array_fill(0, $count_params, '? ') 為 IN 子句產生一串問號。
  • call_user_func_array 用於綁定多個同時傳遞參數,將 $arParams 陣列作為參數傳遞。

以上是如何正確使用 IN 運算子與 MySQLi 預先準備語句和多個參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板