下面是执行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
(因为它传递的是字符串而不是整数)
下面是run函数中$params的varïdump
array(2) {
[0]=> int(1)
[1]=> string(21) "light-resistance-band"
}
2条答案
按热度按时间pxiryf3j1#
您可以自定义您的函数检查
$key
bindparam是这样的:6tqwzwtp2#
您需要添加不同的命名占位符来绑定相应的值(不完全相同)