我的代码:
$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 .')'
遗憾的是没有别的办法.至少现在(是.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。