2013-04-18 136 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();