【问题标题】:How to use a prepared statement with 'IN' clause如何使用带有 \'IN\' 子句的准备好的语句
【发布时间】:2023-02-16 21:18:11
【问题描述】:

我如何使用 PHP 将此 SQL 重写为准备好的语句?

SELECT * FROM user_groupsWHEREgroup_name IN ("'.implode('","',$arrayOfGroupNames).'")

我试过使用 [arrayOfGroupNames => $arrayOfGroupNames] 作为准备语句的第二个参数,但这不起作用。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    使用命名占位符

    $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)), ', ').')';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2012-05-24
      相关资源
      最近更新 更多