Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP PDO:Jak radzić sobie z bindValue() i zastrzeżonymi słowami kluczowymi?

Podczas konstruowania ciągu SQL (chyba prepare_update_string), a także w obu pętlach foreach, w których łączysz dane, uruchom zwiększający się licznik i dołącz go do wartości bind. Tak więc ":status" staje się ":status1".

Coś takiego:

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

To rozwiąże problem wszelkich zarezerwowanych słów kluczowych.

Rozwiązuje również problem (który z pewnością napotkasz w przyszłości), w którym musisz powiązać z tym samym symbolem zastępczym więcej niż raz.

np. zamiast poniższego, co powoduje wyświetlenie błędu z powodu dwóch wiązań w symbolu zastępczym :status

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

Wraz ze wzrostem liczby otrzymujemy:

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

Ciesz się.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uruchomić aplikację desktop z bazą danych lokalnie bez instalowania serwera bazodanowego?

  2. Dynamiczna tabela HTML w poczcie PHP

  3. Korzystanie z bazy danych NoSQL przez MySQL

  4. Powiązanie modelu trasy nie działa

  5. mysql wybierz z listy z regexp/substring