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