sql >> Databasteknik >  >> RDS >> Mysql

PHP PDO MySQL IN (?,?,?

Detta är inte möjligt som du försöker. Du måste ha en separat platshållare för varje parameter du vill skicka in, allt annat skulle trotsa syftet med parametrar (som är att separera kod från data).

$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);

Om du fick skicka in en array av värden till en enskild parameter under bindningen, skulle du i praktiken få ändra SQL-satsen. Detta skulle vara ett kryphål för SQL-injektion - ingenting kunde garantera att alla arrayvärden trots allt skulle vara oskyldiga heltal.




  1. mysql:se alla öppna anslutningar till en given databas?

  2. I Redshift/Postgres, hur räknar man rader som uppfyller ett villkor?

  3. Pyodbc - Datakällans namn hittades inte och ingen standarddrivrutin har angetts

  4. Hur hämtar man mikrosekunder eller millisekunder från MySQL aktuell tid?