sql >> Database >  >> RDS >> Mysql

PHP PDO:Hoe om te gaan met bindValue() en gereserveerde trefwoorden?

Wanneer u de SQL-string construeert (prepare_update_string denk ik), evenals in zowel de foreach-lussen waar u gegevens bindt, voert u een oplopende telling uit en voegt u deze toe aan de bindwaarde. Dus ":status" wordt ":status1".

Iets als:

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

Dit lost het probleem van eventuele gereserveerde zoekwoorden op.

Het lost ook het probleem op (waarvan u zeker weet dat u dit in de toekomst zult tegenkomen) waarbij u meer dan eens aan dezelfde tijdelijke aanduiding moet binden.

bijv. in plaats van het volgende, dat een fout genereert vanwege twee bindingen op de :status placeholder

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

Met een oplopende telling wordt dit:

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

Geniet ervan.



  1. Is de Sql Server Unique Key ook een Index?

  2. MySQL:Tabel maken met FK-fout (errno 150)

  3. mysql regex utf-8 tekens

  4. MAAK TABEL MySQL versus T-SQL met syntaxisvoorbeelden