sql >> Databáze >  >> RDS >> Mysql

PHP PDO MySQL IN (?,?,?

To není možné, jak to zkoušíte. Pro každý parametr, který chcete předat, musíte mít samostatný zástupný symbol, vše ostatní by odporovalo účelu parametrů (který odděluje kód od dat).

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

Pokud by vám bylo povoleno předat pole hodnot jednomu parametru během vazby, bylo by vám umožněno měnit příkaz SQL. To by byla mezera pro SQL injection - nic by nemohlo zaručit, že všechny hodnoty pole budou nevinná celá čísla.




  1. 2 způsoby, jak vypsat všechny funkce v MySQL

  2. Jak zachytit chybové kódy a zprávy MySQL pomocí Laravel 5.2?

  3. Jak mohu nasadit aplikaci .NET, která používá ODAC, aniž bych uživateli instaloval celou komponentu?

  4. generovat dny z období