以字符串作为参数的IN()不适用于PDO


IN() with string as parameter not working with PDO

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

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


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

这在mysql_query语句中可以很好地工作,但在PDO prepare和execute中不起作用(不返回结果)。

我在这里错过了什么?

如果查询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);

请参考MySQL IN语句的PDO绑定值,或者我可以将数组绑定到IN()条件吗?。

我认为这是您正在寻找的解决方案,因为您无法将多个值绑定到.

中的单个命名参数

"在SQL语句的in()子句中,不能将多个值绑定到单个命名参数。"

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

这违背了事先准备好的发言的全部目的。

相关文章: