【发布时间】:2013-11-19 06:00:07
【问题描述】:
我有一个分页脚本,我正在尝试将 mysql 数据库更改为 pdo 数据库,但出现此错误; SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“DESCLIMIT -2,2”附近使用正确的语法
给我带来麻烦的部分代码是;
$limit = "LIMIT ".($page-1)*$perPage.",$perPage";
//$offset = ($page - 1) * $perPage;
$query = $db->prepare('SELECT image_id FROM images WHERE album_id= ? ORDER BY image_id DESC'.$limit);
$query->bindValue(1, $album_id);
//$query->bindParam(':limit', $limit, PDO::PARAM_INT);
try{
$query->execute();
}catch (PDOException $e){
die($e->getMessage());
}
我在 google 上搜索了解决方案,但我的 pdo 知识不足以正确使用它。我遇到了类似的错误; SQLSTATE[HY093]: Invalid parameter number: 绑定变量数与token数不匹配,因为$query->bindParam(':limit', $limit, PDO::PARAM_INT);
我不知道如何解决这个问题,有人可以帮助我吗? 谢谢...
【问题讨论】:
-
根据您的错误,您对术语
DESCLIMIT有问题,这不是正确的SQL,我相信您要使用DESC LIMIT。只需在DESC之后的准备语句末尾添加一个空格即可。 -
我做了 ORDER BY image_id DESC' .$limit);但它没有改变。 ' 前的空格使限制消失。
-
它应该看起来像
ORDER BY image_id DESC ' . $limit);。ORDER_BY之前的一切都应该没问题。 -
如果我像你说的那样移动',错误的结尾看起来像这样;在第 1 行的“-2,2”附近使用正确的语法
-
LIMIT中不能有负值。LIMIT中的第一个数字告诉 SQL 从哪里开始,第二个数字告诉 SQL 你想要返回多少行。
标签: php pdo pagination