sql >> Base de Datos >  >> RDS >> Mysql

PHP PDO MySQL EN (?,?,?

Esto no es posible de la forma en que lo intentas. Debe tener un marcador de posición separado para cada parámetro que desee pasar, todo lo demás desafiaría el propósito de los parámetros (que es separar el código de los datos).

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

Si se le permitiera pasar una matriz de valores a un solo parámetro durante el enlace, se le permitiría modificar la instrucción SQL. Esto sería una escapatoria para la inyección de SQL:después de todo, nada podría garantizar que todos los valores de matriz serían enteros inocentes.