【发布时间】:2023-02-16 21:18:11
【问题描述】:
我如何使用 PHP 将此 SQL 重写为准备好的语句?
SELECT * FROM user_groupsWHEREgroup_name IN ("'.implode('","',$arrayOfGroupNames).'")
我试过使用 [arrayOfGroupNames => $arrayOfGroupNames] 作为准备语句的第二个参数,但这不起作用。
【问题讨论】:
我如何使用 PHP 将此 SQL 重写为准备好的语句?
SELECT * FROM user_groupsWHEREgroup_name IN ("'.implode('","',$arrayOfGroupNames).'")
我试过使用 [arrayOfGroupNames => $arrayOfGroupNames] 作为准备语句的第二个参数,但这不起作用。
【问题讨论】:
使用命名占位符
$arrayOfGroupNames = array_combine($arrayOfGroupNames, $arrayOfGroupNames);
$statement = 'SELECT * FROM `user_groups` WHERE `group_name` in(:'.implode(', :',array_keys($arrayOfGroupNames)).')';
使用 ??
$statement = 'SELECT * FROM `user_groups` WHERE `group_name` in('.trim(str_repeat(', ?', count($arrayOfGroupNames)), ', ').')';
【讨论】: