นี่คือภาพรวมของรหัสของฉัน:
$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 กำลังเพิ่มเครื่องหมายคำพูดเดี่ยวให้กับตัวแปรของฉันในส่วน LIMIT ของรหัส SQL ฉันค้นหามันพบข้อผิดพลาดนี้ซึ่งฉันคิดว่าเกี่ยวข้อง: http://bugs.php.net/bug.php?id=44639
นั่นคือสิ่งที่ฉันกำลังมองหาใช่ไหม จุดบกพร่องนี้ได้เปิดให้บริการตั้งแต่เมษายน 2551! เราควรทำอะไรในระหว่างนี้?
ฉันต้องการสร้างเลขหน้าและต้องการให้แน่ใจว่าข้อมูลนั้นสะอาดปลอดภัยในการฉีด sql ก่อนที่จะส่งคำสั่ง sql