0

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

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


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

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

我在这里想念什么?

4

3 回答 3

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);
于 2012-07-10T01:58:50.113 回答
1

请参阅MySQL IN 语句的 PDO 绑定值我可以将数组绑定到 IN() 条件吗?.

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

于 2012-07-10T01:59:09.970 回答
0

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

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

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

于 2012-07-10T01:54:53.230 回答