sql >> Databasteknik >  >> RDS >> Mysql

PHP PDO:Hur hanterar man bindValue() och reserverade nyckelord?

När du konstruerar SQL-strängen (tror jag prepare_update_string), såväl som i båda foreach-slingorna där du binder data, kör en inkrementerande räkning och lägg till den till bindningsvärdet. Så ":status" blir ":status1".

Något i stil med:

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

Detta kommer att lösa problemet med eventuella reserverade sökord.

Det löser också problemet (som jag är säker på att du kommer att stöta på i framtiden) där du behöver binda till samma platshållare mer än en gång.

t.ex. istället för följande, vilket ger ett fel på grund av två bindningar på platshållaren :status

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

Med en ökande räkning blir detta:

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

Njut.



  1. Databasdesign för ett multiplayer/single quiz-spel

  2. Returnera operativsystemversionsinformation i SQL Server med vyn sys.dm_os_host_info Dynamic Management

  3. Är primärnyckel också index?

  4. Hur man beräknar rang i MySQL