sql >> Database teknologi >  >> RDS >> Mysql

PHP PDO MySQL IN (?,?,?

Dette er ikke muligt, som du prøver det. Du skal have en separat pladsholder for hver parameter, du vil sende ind, alt andet ville trodse formålet med parametre (som er at adskille kode fra 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);

Hvis du fik lov til at overføre en række værdier til en enkelt parameter under binding, ville du faktisk få lov til at ændre SQL-sætningen. Dette ville være et smuthul for SQL-injektion - intet kunne garantere, at alle matrixværdier trods alt ville være uskyldige heltal.




  1. Parsing af tidsstempler - gør det i MySQL eller i PHP?

  2. Brug MySQL relationsdatabaser på Debian 5 (Lenny)

  3. mysqldump:Fejl 2020:Fik pakke større end 'max_allowed_packet' bytes ved dumping af tabel

  4. Nedetid for AWS RDS-instansopgradering