16 ŞUBAT 2010, Salı
Nasıl LİMİT bindValue?
İşte benim kod bir anlık:
$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);
Anladım
SQL sözdizimi bir hata var; onay gelir için Kullanım Kılavuzu sunucu sürümü için MySQL doğru sözdizimi için kullan"', 15' 15 yakın 1 satır
PDO SQL kod SINIRI bölümünde benim değişkenleri tek tırnak ekleyerek gibi görünüyor. İlgili olduğunu düşündüğüm bu hata buldum baktım: http://bugs.php.net/bug.php?id=44639
Neye bakıyorum? Bu hata, Nisan 2008'den bu yana açıldı! Bu arada ne yapmamız gerekiyor?
Bazı veya köprü inşa etmek istiyorum, ve veri temiz olduğundan emin olun sql deyimi göndermeden önce enjeksiyon-güvenli, sql gerekiyor.
CEVAP
16 ŞUBAT 2010, Salı
Daha önce bu sorunu hatırlıyorum. Bağlama işlevine geçirmeden önce bir tamsayı değeri döküm. Bu çözer sanırım.
$fetchPictures->bindValue(':skip', (int) trim($_GET['skip']), PDO::PARAM_INT);
Bunu Paylaş:
Nasıl Şehri için google otomatik tamam...
Nasıl bir " limit;Komut Çalıştır"...
Nasıl son tamamlama Geri Al mı?...
JavaScript kilitler nasıl çalışır?...
Nasıl bir yönlendirme sayfası jQuery k...