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

PHP PDO MySQL IN (?,?,?

Nie jest to możliwe w taki sposób, w jaki tego próbujesz. Musisz mieć osobny symbol zastępczy dla każdego parametru, który chcesz przekazać, wszystko inne sprzeciwiałoby się celowi parametrów (czyli oddzielaniu kodu od danych).

$ids = array(2, 4, 6, 8);

// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql   = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt  = $PDO->prepare($sql);
$rows  = $stmt->execute($parms);

Gdybyś mógł przekazać tablicę wartości do pojedynczego parametru podczas wiązania, mógłbyś efektywnie zmienić instrukcję SQL. Byłaby to luka dla wstrzykiwania SQL — w końcu nic nie może zagwarantować, że wszystkie wartości tablicy będą niewinnymi liczbami całkowitymi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najłatwiejszy sposób na konwersję tablicy bajtów na Blob w java

  2. usuń wszystkie rekordy z tabeli w mysql

  3. Dlaczego otrzymuję inny wynik, gdy używam sprzężenia wewnętrznego?

  4. Pobieranie liczby wierszy i danych tego wiersza w pojedynczym zapytaniu za pomocą PDO w PHP

  5. WYBIERZ wszystkie rekordy sprzed 30 dni