Php pdo分页限制错误
我有一个分页脚本,我试图将mysql数据库更改为pdo数据库,但我得到了这个错误;SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“DESCLIMIT-2,2”附近使用的正确语法 代码中给我带来麻烦的部分是Php pdo分页限制错误,php,pdo,pagination,Php,Pdo,Pagination,我有一个分页脚本,我试图将mysql数据库更改为pdo数据库,但我得到了这个错误;SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“DESCLIMIT-2,2”附近使用的正确语法 代码中给我带来麻烦的部分是 $limit = "LIMIT ".($page-1)*$perPage.",$perPage"; //$offset = ($page - 1) * $perPage; $query = $db->
$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());
}
我在谷歌上搜索解决方案,但我的pdo知识不足以正确使用它。我犯了这样的错误;SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配,因为$query->bindParam(':limit',$limit,PDO::PARAM_INT)代码>
我不知道怎么解决这个问题,有人能帮我吗?
谢谢 mysql似乎不喜欢负偏移量。你可以这样做
$limit = ($page-1)*$perPage;
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
$sql = 'SELECT image_id FROM images WHERE album_id=? ORDER BY image_id DESC LIMIT ?,?';
$stmt = $pdo->prepare($sql);
$stmt->execute([$album_id,$limit,$perPage]);
$ids = $stmt->fetchAll(PDO::FETCH_COLUMN);
在本教程中,第一个查询是$count\u query=$db->prepare('selectnull FROM images where album\u id=?')代码>
这在教程中有效,但在这里不起作用,我认为这给出了负值。
我将其更改为$count\u query=$db->prepare('SELECT*FROM image where album\u id=?')代码>
错误消失了。现在出现了其他错误,希望我能解决。
感谢您帮助我解决此错误。根据您的错误,您对术语DESCLIMIT
有问题,这不是正确的SQL,我相信您选择的是DESCLIMIT
。只需在prepare语句末尾的DESC
后面加一个空格即可。我确实按image_id DESC.$limit)进行了订购;但这并没有改变。“它使限制消失。它应该像orderbyimage\u id DESC”前面的空格$限制)代码>。在
下订单之前的一切都应该是好的。如果我像你所说的那样移动';要在第1行使用接近“-2,2”的正确语法,在限制中不能有负值。LIMIT
中的第一个数字告诉SQL从哪里开始,第二个数字告诉SQL要返回多少行。遗憾的是,没有区别。错误的结尾现在看起来是这样的;对于在第1行使用近'-2,2'的正确语法