2013-04-18 145 views
1

如何使用PDO編寫以下請求?SQL Server:PDO`IN`語句語法

$query = "SELECT test FROM table WHERE cond IN(1,2,3)"; 

我嘗試這樣做,但它不工作:

$query = "SELECT test FROM table WHERE cond IN(?)"; 
$params = array($condArray); 
$result = sqlsrv_query($connConfig, $query, $params) ; 
+2

我不認爲PDO支持表值參數(如果它沒有,你的語法是一點點關閉) – 2013-04-18 07:03:13

+0

不,它不以這種方式工作:?''應該是一個標量值,而不是數組。一種可能的方法是根據數組的長度創建一串「?,?,...」。 – raina77ow 2013-04-18 07:03:46

+0

@ raina77ow確定,但我不知道我的數組有多少個條目。如果可能的話,我會避免動態創建'?'的數量 – sdespont 2013-04-18 07:05:40

回答

0

@Your常識評論做的伎倆。

Reference - frequently asked questions about PDO

$ids = array(1,2,3); 
$in = str_repeat('?,', count($arr) - 1) . '?'; 
$sql = "SELECT * FROM table WHERE column IN ($in)"; 
$stm = $db->prepare($sql); 
$stm->execute($ids); 
$data = $stm->fetchAll();