sql >> Database teknologi >  >> RDS >> Mysql

PHP PDO:Hvordan håndterer man bindValue() og reserverede søgeord?

Når du konstruerer SQL-strengen (prepare_update_string tror jeg), såvel som i begge de foreach-løkker, hvor du binder data, skal du køre en trinvis optælling og tilføje den til bindeværdien. Så ":status" bliver til ":status1".

Noget som:

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

Dette vil løse problemet med reserverede søgeord.

Det løser også problemet (som jeg er sikker på du vil støde på i fremtiden), hvor du skal binde til den samme pladsholder mere end én gang.

for eksempel. i stedet for følgende, som kaster en fejl på grund af to bindinger på :status pladsholderen

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

Med et stigende antal bliver dette:

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

God fornøjelse.



  1. Oracle-parametre med IN-sætning?

  2. Hvorfor ruller transaktioner ikke tilbage, når du bruger SpringJUnit4ClassRunner/MySQL/Spring/Hibernate

  3. Spotlight Cloud-understøttelse af Azure SQL DB-meddelelse (Preview)

  4. Hvordan ændres datostil i PostgreSQL?