【发布时间】:2022-01-12 08:04:09
【问题描述】:
这是我的代码快照:
$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 服务器版本 在 ''15', 15' 附近使用的正确语法 第 1 行
似乎 PDO 在 SQL 代码的 LIMIT 部分中为我的变量添加了单引号。我查了一下,发现了这个我认为相关的错误: http://bugs.php.net/bug.php?id=44639
这是我在看的吗?自 2008 年 4 月以来,此错误已打开! 在此期间我们应该做什么?
我需要建立一些分页,并且在发送sql语句之前需要确保数据是干净的,sql注入安全的。
【问题讨论】:
标签: php mysql sql pdo bindvalue