使用IN 運算子的MySQLi 準備語句
本文解決了在MySQLi 中使用IN 運算子和準備語句從資料庫中選擇行語句的問題。原發者提供的初始代碼:
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)'); $data_res->bind_param('s', $in_statement); $data_res->execute();
儘管資料庫中存在數據,但未能傳回任何結果。
解決方案涉及透過引用手動綁定每個參數:
$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();
這種方法允許使用 IN 運算子正確執行準備好的語句,確保從資料庫。
以上是如何正確使用 MySQLi 預先準備語句和 IN 運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!