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

Symfony2.3 surowe zapytanie sql z klauzulą ​​IN

Odpowiedź:

Więc popełniłeś co najmniej dwa błędy. Pierwszym jest to, co powiedział @Alarid:nie powinieneś implodować swojej tablicy. Po drugie, musisz użyć DoctrineDBALTypes Conversion dla IN clause podczas uruchamiania przygotowanego zestawienia.

I na koniec Twoje zapytanie brzmi tak:

$stmt = $this->getDoctrine()->getEntityManager()
        ->getConnection()
        ->prepare('SELECT t1.id , t1.name , t2.start_date , t2.end_date
        FROM table1 t1 , table2 t2
        WHERE t1.id = t2.matchId AND  t1.id IN (:ids)');

$stmt->bindValue('ids', $idSArray, \Doctrine\DBAL\Connection::PARAM_INT_ARRAY);
$stmt->execute();

Lub alternatywa:

$stmt = $this->getDoctrine()->getEntityManager()
    ->getConnection()
    ->executeQuery('SELECT t1.id , t1.name , t2.start_date , t2.end_date
        FROM table1 t1 , table2 t2
        WHERE t1.id = t2.matchId AND  t1.id IN (:ids)',
        array('ids' => $idSArray),
        array('ids' => \Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
    )
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDOException „nie można znaleźć sterownika”

  2. Uruchamianie klastra Galera na Kubernetes

  3. wstaw, jeśli nie istnieje, po prostu wybierz w mysql

  4. Baza danych nie istnieje z laravel

  5. Architektura bazy danych dla milionów nowych wierszy dziennie