使用IN 運算子的MySQLi 準備語句
準備語句允許您單獨指定參數值,從而比傳統查詢提供增強的安全性和性能聲明本身。但是,當涉及到將準備好的語句與 IN 運算子一起使用時,如果您的方法不正確,則可能會遇到問題。
問題
如最初所述查詢時,使用 bind_param('s', $in_statement)將逗號分隔的值字串綁定到準備好的語句將不會產生結果,即使資料存在於
解決方案
解決方案在於單獨處理每個參數值:
範例程式碼
<?php $lastnames = ['braun', 'piorkowski', 'mason', 'nash']; $arParams = []; 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 = $mysqli->prepare("SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ({$params})"); call_user_func_array([$data_res, 'bind_param'], $arParams); $data_res->execute(); $result = $data_res->get_result(); while ($data = $result->fetch_array(MYSQLI_ASSOC)) { // Your code here... } $result->free(); $data_res->close();
範例程式碼
此方法允許您使用IN運算子將多個值正確綁定到準備好的語句。以上是如何有效地使用 MySQLi 預先準備語句和 IN 運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!