다음은 내 코드의 스냅 샷입니다.
$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 주입에 안전한지 확인해야합니다.