Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP PDO :Comment gérer bindValue() et les mots-clés réservés ?

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.