【发布时间】:2018-04-11 16:55:01
【问题描述】:
在尝试创建分页后,我注意到 PHP 的 bindValue 在与 MySQL 的 ORDER BY 或 LIMIT 子句一起使用时不起作用.
这很奇怪,因为它可以在 MySQL 中的任何其他地方工作(至少据我所知)。例如,这完全可以正常工作:
SELECT * FROM table WHERE foo = ? AND bar = ?
但是,当尝试以下操作时:
SELECT * FROM table ORDER BY date DESC LIMIT ?, ?
它将返回一个空对象。
这就是我执行查询的方式(请注意,这都是简化的,我使用的函数都是 class 的一部分):
// query function
function query($sql, $params){
if($query = $pdo->prepare($sql)){
$x = 1;
if(count($params)){
foreach($params as $param){
$query->bindValue($x, $param);
$x++;
}
}
if($query->execute()){
return $query->fetchAll(PDO::FETCH_OBJ);
} else {
return false;
}
}
}
// executing a query (this will return an empty object)
$query = query("SELECT * FROM table ORDER BY date DESC LIMIT ?, ?", array(0, 10));
var_dump($query);
似乎无法解决这个问题,因此感谢所有帮助,
干杯。
【问题讨论】:
-
@lolbas 我试过
$query->bindParam($x, $param, PDO::PARAM_INT);(和PARAM_STR)无济于事。 -
这不是链接答案所暗示的。
-
@lolbas 啊!你是对的,没有注意到&符号。会试一试:)