Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP PDO:Как да се справим с bindValue() и запазените ключови думи?

Когато конструирате SQL низа (мисля, че prepare_update_string), както и в двата цикъла foreach, където свързвате данни, стартирайте нарастващ брой и го добавете към стойността за свързване. Така че ":status" става ":status1".

Нещо като:

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

Това ще реши проблема с всички запазени ключови думи.

Той също така решава проблема (който съм сигурен, че ще се сблъскате в бъдеще), при който трябва да се свържете с един и същ контейнер повече от веднъж.

напр. вместо следното, което хвърля грешка поради две свързвания на :status placeholder

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

С нарастващ брой това става:

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

Насладете се.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Едновременни актуализации на MySQL

  2. Django и паралелна обработка:

  3. Node.js ssh2 тунел поддържа жив и изпълнява mysql заявки

  4. mysql е масив в множество колони

  5. Стартирайте localhost на mac OS X Yosemite