Aqui está um instantâneo do meu código:
$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);
eu recebo
Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para a sintaxe correta para usar próximo a '' 15 ', 15' na linha 1
Parece que o PDO está adicionando aspas simples às minhas variáveis na parte LIMIT do código SQL. Eu pesquisei e encontrei este bug que acho que está relacionado: http://bugs.php.net/bug.php?id=44639
É isso que estou olhando? Este bug está aberto desde abril de 2008! O que devemos fazer enquanto isso?
Preciso construir alguma paginação e ter certeza de que os dados estão limpos e seguros para injeção de sql antes de enviar a instrução sql.