开发者社区> 问答> 正文

WHERE IN子句与PDO的绑定参数?mysql

我的代码:

$myArray = implode($myArray, ','); $sth = $dbh->prepare('SELECT foo FROM bar WHERE ids IN (:ids)'); $sth->bindParam(':ids', $myArray); $sth->execute(); $result = $sth->fetch(); echo $sth->rowCount(); 始终显示为1的计数,但是当我跳过参数化并仅将变量本身添加到其位置时,我得到了准确的计数。这里发生了什么?

展开
收起
保持可爱mmm 2020-05-17 11:04:01 608 0
1 条回答
写回答
取消 提交回答
  • 您不能像这样为IN子句绑定参数。$ myArray字符串将仅计为一个值,例如执行以下操作:

    SELECT foo FROM bar WHERE ids IN ('1,2,3') 即使有三个以逗号分隔的值,数据库也会将它们作为一个字符串值读取。

    您需要以惯用的方式手动将IN列表插入查询中。

    'SELECT foo FROM bar WHERE ids IN (' . $myArray .')' 不幸的是没有其他办法。至少现在(是。来源:stack overflow

    2020-05-17 11:04:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像