WHERE IN子句与PDO的绑定参数

我的代码:

$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的计数,但是当我跳过参数化并仅将变量本身添加到其位置时,我得到了准确的计数。这里发生了什么?

回答:

您不能像这样为IN子句绑定参数。$ myArray字符串将仅计为一个值,例如执行以下操作:

SELECT foo FROM bar WHERE ids IN ('1,2,3')

即使有三个以逗号分隔的值,数据库也会将它们作为一个字符串值读取。

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

'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'

不幸的是没有其他办法。至少现在(是。

以上是 WHERE IN子句与PDO的绑定参数 的全部内容, 来源链接: utcz.com/qa/408580.html

回到顶部