【问题标题】:How can I bind parameters in a PHP PDO WHERE IN statement如何在 PHP PDO WHERE IN 语句中绑定参数
【发布时间】:2011-03-23 09:43:39
【问题描述】:

参数:

$params = 2826558;                        # Necessary Object
$params = array(2826558,2677805,2636005); # NULL

执行代码:

    $data = $this->DQL_selectAllByCampaign_id()
                 ->execute( array($params) )
                 ->fetchAll();

    var_dump( $data );

SQL 查询:

$this->DQL_selectAllByCampaign_id = $this->conn->prepare(

        "SELECT * FROM `banner` WHERE  `campaign_id` IN (?)"

);

如果$params 是整数,则返回必要的对象。 如果$params 是Array,则返回NULL。

毕竟,事实上它应该可以工作......我该怎么做?

【问题讨论】:

  • 不幸的是我没有直接访问 PDO 对象,我只有 $this->DQL_selectAllByCampaign_id() 包装方法 quote 当前数组值。我试图 implode(',',$params);,但没有成功,只在数组的第一个元素中按 id 接收行。

标签: php pdo where-in


【解决方案1】:

我很确定这不是“正确”答案,但我们通过添加 count($array) 占位符解决了这个问题。然后使用 call_user_func_array 传入参数。

感谢您提出这个问题 - 找出正确的方法会很有趣......

【讨论】:

  • 我找到了您所说的解决方案 - php.net/manual/en/pdo.prepare.php。显然,这确实是最常见的解决方案。但它是一个拐杖。我会寻找比这更漂亮的解决方案,但还是这样做了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2021-09-04
  • 2018-02-26
  • 2013-06-08
相关资源
最近更新 更多