IN()与字符串作为参数不与PDO一起使用

时间:2012-07-10 01:53:07

标签: php mysql pdo

我正在尝试将包含以下内容的mysql_query语句转换为PDO:

$string = '2, 3, 4, 5, 7, 8';


    mysql_query(" ... IN($string) ...");

这适用于mysql_query语句,但它不适用于PDO准备和执行(不返回任何结果)。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

如果查询sql与mysql_query一起正常工作,那么它可以正常使用pdo。

如果只用一个占位符绑定整个字符串,那么什么是行不通的。 您需要为IN子句的每个值绑定。

示例:

$string = '2, 3, 4, 5, 7, 8';
$params = explode(', ', $string);
$sth = $pdo->prepare(' ... IN('.join(',', array_fill(0, count($params), '?')).') ...');
$ret = $sth->execute($params);

答案 1 :(得分:1)

请参阅PDO binding values for MySQL IN statementCan I bind an array to an IN() condition?

我认为这是您正在寻找的解决方案,因为您无法将多个值绑定到单个命名参数中。

答案 2 :(得分:0)

“您无法将多个值绑定到单个命名参数,例如,SQL语句的IN()子句。”

http://php.net/manual/en/pdo.prepare.php

这违背了预备陈述的全部目的。