gpt4 book ai didi

php - MySQL WHERE IN () + AND , PDO 只返回一行

转载 作者:行者123 更新时间:2023-11-29 04:23:05 25 4
gpt4 key购买 nike

如果在 phpmyadmin 中输入以下查询,则返回所有想要的结果:

SELECT     postid, voting 
FROM postvotes
WHERE userid = 1
AND postid IN
(1007,1011,1012,1013,1014,
1015,1016,1017,1018,1019,1020,1021,1023,1025,1026,
1027,1028,1029,1030,1031)

但是 PDO 无法获取全部()。它只返回第一个匹配项,如 fetch()。

怎么了?

PHP 代码:

private function userPostVotings( $postIDs ) {

// $postIDs contains a string like 1,2,3,4,5,6,7...
// generated through implode(',', idArray)

try {

$userPostVote = $this->_db->prepare('SELECT postid, voting
FROM postvotes
WHERE userid = ?
AND postid IN ( ? )');

$userPostVote->setFetchMode(\PDO::FETCH_ASSOC);
$userPostVote->execute( array( $this->_requester['id'], $postIDs ) );

while ( $res = $userPostVote->fetch() ) {

var_dump( $res );

}

} catch (\PDOException $p) {}

}

如果我回显此方法中使用的查询并通过 phpmyadmin 触发它,我会得到正确数量的结果。然而,PDO 只给出了第一个。无论循环是使用 fetch() 还是 fetchAll()。

最佳答案

您不能在 PDO 的准备语句中绑定(bind)数组。

引用: Can I bind an array to an IN() condition?

关于php - MySQL WHERE IN () + AND , PDO 只返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18139549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com