这是我的代码的快照:
$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);
Run Code Online (Sandbox Code Playgroud)
我明白了
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"15",15'附近使用正确的语法
似乎PDO在SQL代码的LIMIT部分中为我的变量添加单引号.我查了一下我发现了这个我认为相关的错误:http: //bugs.php.net/bug.php?id = 44639
这就是我在看的东西吗?这个bug自2008年4月开始!在此期间我们应该做什么?
我需要构建一些分页,并且需要在发送sql语句之前确保数据是干净的,sql注入安全的.
这是有关PHP数据对象的常见问题列表
由于PDO具有常规PHP用户未知的某些功能,因此有关PDO中的预准备语句和错误处理的问题非常频繁.所以,这只是一个可以找到它们的地方.
如果您的问题已与此列表密切相关,请在下面找到您的问题并将修复程序应用于您的代码.对其他问题进行简要介绍也是一个好主意,让自己为其他常见陷阱做好准备.
也可以看看