これが私のコードのスナップショットです:
$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構文にエラーがあります。1行目の「15」、「15」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
PDOがSQLコードのLIMIT部分の変数に一重引用符を追加しているようです。調べてみたところ、関連していると思われるこのバグが見つかりました:http: //bugs.php.net/bug.php? id=44639
それは私が見ているものですか?このバグは2008年4月から開かれています。その間に私たちは何をすべきでしょうか?
SQLステートメントを送信する前に、ページネーションを作成し、データがクリーンでSQLインジェクションに対して安全であることを確認する必要があります。