Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP PDO MySQL IN (?,?,?

So wie du es versuchst ist das nicht möglich. Sie müssen für jeden Parameter, den Sie übergeben möchten, einen separaten Platzhalter haben, alles andere würde dem Zweck von Parametern widersprechen (der Code von Daten trennt).

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

Wenn Sie während der Bindung ein Array von Werten an einen einzelnen Parameter übergeben dürften, wäre es Ihnen tatsächlich erlaubt, die SQL-Anweisung zu ändern. Dies wäre ein Schlupfloch für die SQL-Injection - nichts könnte garantieren, dass alle Array-Werte schließlich unschuldige Integer wären.