我正在尝试将包含以下内容的 mysql_query 语句转换为 PDO:
$string = '2, 3, 4, 5, 7, 8';
mysql_query(" ... IN($string) ...");
这适用于mysql_query
语句,但不适用于 PDO 准备和执行(不返回结果)。
我在这里想念什么?
如果查询 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() 条件吗?.
我认为这是您正在寻找的解决方案,因为您无法将多个值绑定到单个命名参数。