Lorsque vous construisez la chaîne SQL (prepare_update_string je pense), ainsi que dans les deux boucles foreach où vous liez des données, exécutez un décompte incrémentiel et ajoutez-le à la valeur de liaison. Donc ":status" devient ":status1".
Quelque chose comme :
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
Cela résoudra le problème des mots-clés réservés.
Cela résout également le problème (que vous rencontrerez certainement à l'avenir) où vous devez vous lier au même espace réservé plus d'une fois.
par exemple. au lieu de ce qui suit, qui génère une erreur en raison de deux liaisons sur l'espace réservé :status
SELECT * from table WHERE `status` = :status AND `otherfield` = :status
Avec un décompte croissant, cela devient :
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
Profitez-en.