sql >> Base de Datos >  >> RDS >> Mysql

PHP PDO:¿Cómo lidiar con bindValue () y palabras clave reservadas?

Cuando construya la cadena SQL (creo que prepare_update_string), así como en ambos bucles foreach donde vincula datos, ejecute un conteo incremental y agréguelo al valor de vinculación. Entonces ":estado" se convierte en ":estado1".

Algo como:

$i = 1;
foreach ($data as $k => $v) {
    $this->_sth->bindValue(":{$k.$i}", $v);
    $i++;
}

Esto resolverá el problema de las palabras clave reservadas.

También resuelve el problema (que estoy seguro de que encontrará en el futuro) en el que necesita enlazar al mismo marcador de posición más de una vez.

p.ej. en lugar de lo siguiente, que arroja un error debido a dos enlaces en el :marcador de posición de estado

SELECT * from table WHERE `status` = :status AND `otherfield` = :status

Con un conteo incremental, esto se convierte en:

SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2

Disfruta.