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

PDO - zapytanie nie daje wyników

Problem polega na tym, że wiążesz parametry za pomocą bindParam , który używa wiązania przez odwołanie. W twoim przypadku powinieneś użyć bindValue zamiast tego:

foreach( $binders as $key => $value ) {
    $sql->bindValue( $key, $value );
}

Lub możesz przekazać swoją tablicę bezpośrednio do execute() metoda:

$sql->execute( $binders );

Jak opisano w instrukcji:

the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.

Więc kiedy pętla foreach kończy się $value ma wartość ostatniego elementu tablicy Apple . Więc kiedy execute działa, oba :ctid i :p1 wartości stają się równe Apple . Na pewno nie tego chcesz)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql dzisiaj, wczoraj i data z bazy danych

  2. Czy bardziej wydajne jest przekazywanie dużych pakietów parcelable lub przekazywanie identyfikatora i bazy danych zapytania?

  3. Zalety pdo nad mysql_* lub mysqli_*

  4. Wysyłaj dane z Androida na serwer przez JSON

  5. Zastąpić zmienne MySQL w PostgreSQL?