Следующий запрос возвращает все требуемые результаты, если ввести в PHPMyAdmin:MySQL WHERE IN() + И, PDO возвращает только один ряд
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 не в fetchAll(). Он просто возвращает первое совпадение подобно 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().
если запрос побежал нормально, то это ошибка PHP, отправлять вам PHP код, я предполагаю, что вы говорите о расширении php pdo –
Добавлен код php – user2429266
Где находится fetchAll()? –