sql >> Databáze >  >> RDS >> Mysql

PHP PDO:Jak se vypořádat s bindValue() a vyhrazenými klíčovými slovy?

Když vytvoříte řetězec SQL (myslím, že prepare_update_string), stejně jako v obou smyčkách foreach, kde vážete data, spusťte zvyšující se počet a připojte jej k hodnotě vazby. Takže ":status" se změní na ":status1".

Něco jako:

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

To vyřeší problém všech vyhrazených klíčových slov.

Řeší to také problém (se kterým se určitě v budoucnu setkáte), kdy se potřebujete vázat na stejný zástupný symbol více než jednou.

např. místo následujícího, což vyvolá chybu kvůli dvěma vazbám na zástupný symbol :status

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

S narůstajícím počtem to bude:

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

Užijte si to.



  1. Vyberte, kde JSON Array obsahuje

  2. WHERE IS NULL, IS NOT NULL nebo NO WHERE klauzule v závislosti na hodnotě parametru SQL Server

  3. MuleSoft zahrnuje GraphQL k pokročilé integraci API

  4. Klauzule WHERE je lepší provést před IN a JOIN nebo po