Ricevo questo fastidioso errore e anche se ho un'idea del motivo per cui lo sto ottenendo, non posso per la vita di me trovare una soluzione ad esso .Errore PDO: SQLSTATE [HY000]: errore generale: 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);
La query contiene segnaposto (:placeholder
). Ma per aggiungere quei LIMITI segnaposto, ho bisogno di usare il metodo manuale (bindValue
) perché altrimenti il motore li trasformerà in stringhe.
Non riesco ad ottenere l'errore di numero di parametri errato, quindi tutti i segnaposto sono stati correttamente associati (presumo).
Query:
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
Tutti i valori segnaposto risiedono nei criteri di $, tranne che per gli ultimi due LIMIT, che mi legano manualmente con bindValue()
.
Prova a cercare su google "DOP parametri limite vincolante" –
1) Sarebbe stato bello per includere il messaggio di errore leggibile invece di solo il codice criptico, 2) Mostrare la query in modo reale possiamo vedere da dove proviene l'errore. – deceze
@deceze Se ci fosse qualche messaggio umano leggibile lì, io: a) probabilmente l'ho risolto ora, b) se no, quindi incluso qui. Questo era il messaggio di errore completo, fidati di me. – silkfire