我得到這個令人討厭的錯誤,雖然我有一個爲什麼我得到它的想法,我不能爲我的生活找到一個解決方案。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