如何在 LIMIT 子句中应用 bindValue 方法?
以下是我的代码的快照:
$fetchPictures = $PDO->prepare("SELECT *
FROM pictures
WHERE album = :albumId
ORDER BY id ASC
LIMIT :skip, :max");
$fetchPictures->bindValue(':albumId', $_GET['albumid'], PDO::PARAM_INT);
if(isset($_GET['skip'])) {
$fetchPictures->bindValue(':skip', trim($_GET['skip']), PDO::PARAM_INT);
} else {
$fetchPictures->bindValue(':skip', 0, PDO::PARAM_INT);
}
$fetchPictures->bindValue(':max', $max, PDO::PARAM_INT);
$fetchPictures->execute() or die(print_r($fetchPictures->errorInfo()));
$pictures = $fetchPictures->fetchAll(PDO::FETCH_ASSOC);
我得到
您的 SQL 语法中存在错误;检查与您的MySQL服务器版本相对应的手册,以获取在第1行的“15”,15“附近使用正确的语法
似乎PDO正在SQL代码的LIMIT部分中向我的变量添加单引号。我查了一下,我发现了这个错误,我认为它是相关的:http://bugs.php.net/bug.php?id=44639
这就是我所看到的吗?此错误自2008年4月以来一直打开!在此期间,我们应该怎么做?
我需要构建一些分页,并且需要在发送sql语句之前确保数据干净,sql注入安全。