【发布时间】:2018-01-12 09:20:41
【问题描述】:
我有以下执行 Mysql 查询的 PDO 函数。它适用于所有查询。
public function run($sql, array $params = NULL) {
$statement = $this->pdo->prepare($sql);
if (!is_null($params)) {
foreach ($params as $key) {
$statement->bindParam(":n", $key);
}
}
$statement->execute();
return $statement->fetchAll(PDO::FETCH_CLASS);
}
但是,当我运行以下查询时,它返回一个空集
$variation = $query->run(
"SELECT url, title, sale_price
FROM product
where category_id = :n
and url != :n",
[ $data[0]->category_id, $filePathArray[1] ]
);
当我在 mysql 客户端手动运行查询时,它的工作原理。
我尝试了类型转换类别 id 但没有乐趣:
(int)$data[0]->category_id
(因为它传递的是字符串而不是整数)
这是运行函数中 $params 的 var_dump
array(2) {
[0]=> int(1)
[1]=> string(21) "light-resistance-band"
}
【问题讨论】:
-
您不能在单个查询中重复使用占位符。
-
您正在使用命名占位符,名称
:n使用了两次,并且您将两个不同的值绑定到:n。那应该如何工作?