2011-08-15 17 views
2

,其原因應該是顯而易見的,這是殺人搜索...正確的格式/ NOT IN查詢

如何做到這一點的PDO:

SELECT thing FROM things WHERE thing_uid IN (...) 

我特定的用例是一個通過從具有數十個複選框的表單中抽取數組而構建的字符串。在標準的MySQL,這是很容易...

$thingString = implode("', '", $thingArray); 
$q = "SELECT thing FROM things WHERE thing_uid IN ('$thingString')"; 

,但我想是從PDO的防注入保護...約束PARAMS和所有受益。那我該怎麼做呢?

+1

@Kris問題沒有說明綁定表名。這是關於在IN()'查詢中有一個可變數量的佔位符。 –

+0

克里斯你不知道我在說什麼 – Drew

回答

6

根據您的值創建儘可能多的?的數組,並將其引入查詢。

$placeholders = array_fill(0, count($thingArray), '?'); 
$sql = "SELECT thing FROM things WHERE thing_uid IN (" . implode(',', $placeholders) . ")"; 
+2

也可以使用['array_fill()'](http://php.net/manual/en/function.array-fill.php) – Phil

+2

所以我準備與佔位符**?**在數量上與我的參數相同,然後是'$ stmt-> execute($ thingArray);'我很好走,對嗎? (目前不能測試,所以我問) – Drew

+1

@Andrew是的,那個作品 –