Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP DOP MySQL IN (?,?,?


Isso não é possível do jeito que você tenta. Você deve ter um espaço reservado separado para cada parâmetro que deseja passar, todo o resto desafiaria o propósito dos parâmetros (que é separar o código dos dados).
$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);

Se você tivesse permissão para passar uma matriz de valores para um único parâmetro durante a ligação, você efetivamente teria permissão para alterar a instrução SQL. Isso seria uma brecha para injeção de SQL - nada poderia garantir que todos os valores de matriz fossem inteiros inocentes, afinal.