我有一个分页脚本,我正在尝试将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());
}
我在谷歌搜索了解决方案,但我的pdo知识不够好,无法正确使用它。我得到了错误; SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配,因为$query->bindParam(':limit', $limit, PDO::PARAM_INT);
我不知道如何解决这个问题,有人可以帮帮我吗? 谢谢......
答案 0 :(得分:1)
$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);
答案 1 :(得分:-1)
在教程中,第一个查询是$count_query = $db->prepare('SELECT NULL FROM images where album_id= ?');
这在教程中有效,但在这里没有,我认为这给了负值。
我将其更改为$count_query = $db->prepare('SELECT * FROM images where album_id= ?');
而错误消失了。现在出现了其他错误,希望我能解决这个问题。
谢谢你帮我解决了这个错误。