Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP PDO MySQL IN (?,?,?

Това не е възможно по начина, по който го опитвате. Трябва да имате отделен заместител за всеки параметър, който искате да предадете, всичко останало би се противопоставило на целта на параметрите (която е разделянето на кода от данните).

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

Ако ви е било разрешено да предадете масив от стойности към един параметър по време на свързването, на практика ще ви бъде позволено да промените SQL израза. Това би било вратичка за SQL инжектиране – нищо не може да гарантира, че всички стойности на масива ще бъдат невинни цели числа, все пак.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ВЪВЕТЕ множество записа, използвайки активен запис на ruby ​​on rails

  2. PHP константа не е дефинирана

  3. Как да получите COUNT заявка в django

  4. Сравнете стойността с низ, разделен със запетая, SQL PHP

  5. SQL:Как да поддържам ред на редовете с DISTINCT?