私はこの厄介なエラーを受けていますが、なぜ私はそれを取得しているのアイデアはありますが、私の人生のための解決策を見つけることはできません。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()
と結合する最後の2 LIMITを除き、$基準に常駐します。
は、そうではなく、単に不可解なコードの人間が読めるエラーメッセージを含めることが良かった2)あなたの実際のクエリを表示しただろう)Googleの「PDO結合LIMITパラメータ」 –
1で検索してみてくださいエラーの原因がどこにあるかを見ることができます。 – deceze
@deceze人間が読めるメッセージがあれば、私は:a)おそらく今までに解決していた、b)そうでなければ、ここに含めたと思うだろう。これは完全なエラーメッセージで、私を信頼してください。 – silkfire