我得到这个令人讨厌的错误,虽然我有一个为什么我得到它的想法,我不能为我的生活找到一个解决方案。PDO错误:SQLSTATE [HY000]:一般错误:2031
if ($limit) {
$sth->bindValue(':page', $page - 1, PDO::PARAM_INT);
$sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);
}
$sth->execute($criteria);
查询包含占位符(:placeholder
)。但要添加这些LIMIT占位符,我需要使用手动方法(bindValue
),否则引擎会将它们变成字符串。
我没有得到无效的参数数量的错误,所以所有的占位符已被正确绑定(我假设)。
查询:
SELECT `articles`.*, `regional_municipalities`.`name` AS `regional_municipality_name`,
`_atc_codes`.`code` AS `atc_code`, `_atc_codes`.`name` AS `substance`
FROM `articles`
LEFT JOIN `_atc_codes`
ON (`_atc_codes`.`id` = `articles`.`atc_code`)
JOIN `regional_municipalities`
ON (`regional_municipalities`.`id` = `articles`.`regional_municipality`)
WHERE TRUE AND `articles`.`strength` = :strength
GROUP BY `articles`.`id`
ORDER BY `articles`.`id`
LIMIT :page, :entries_per_page
所有占位符值驻留在$标准,除了最后两所限,我手动bindValue()
绑定。
尝试在谷歌搜索“PDO结合极限参数” –
1)它会一直不错,包括人类可读的错误信息,而不是仅仅的神秘代码,2)显示您的实际查询,以便我们可以看到错误源于哪里。 – deceze
@deceze如果在那里有任何人类可读的消息,我会:a)现在可能已经解决了它,b)如果没有,然后将它包括在这里。这是完整的错误信息,相信我。 – silkfire