PHP: "bunları kapsayan veya 'olmadan mysql sorgu değişkenlerini Passing

4 Cevap php

Böylece gibi sorguları yapan bir açık kaynak uygulama var:

$db->query('SELECT item FROM table WHERE something='.$something);

(Haklı olarak) o ($ şeyin değeri) şikayet ben bir hata, mysql "şey = ($ şey değer)" olarak görmektir olsun tam olarak aynı yöntemi kullanın ve eğer bu iyi çalışır, mysql Ancak sorguyu çalıştırır bir satır. Bu uygulamalar aynı sunucu üzerinde çalışan hem ben saatlerce kendi kodu ile köklü ettik ama ben bunu neden ne işe olamaz.

$db->query('SELECT item FROM table WHERE something='.$something);

kendi uygulama çalışıyor ama benim başarısız. Ben geçen kulüpler dize ile bir şey yapmak gerekiyor mu? Ben gibi, hiçbir sorun düzgün değişkenleri kapsayan var:

$db->query('SELECT item FROM table WHERE something="'.$something.'"');

ama ben fark neden bilmek istiyorum.

4 Cevap

MySQL kapalı olması dize gerekiyor. Bence tek şey $ şey bir tamsayı ya da bir şamandıra olmasıdır.

Tırnak olmadan numaralarını geçebilir

SELECT ... WHERE id=5

ancak böyle tırnak gibi dize hazır işaretlemek zorunda

SELECT ... WHERE id='abc'

bkz http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

  1. $ Şey kullanıcı / tarayıcıdan gelirse kod kötü kötü kötü. Bu çağrı sql_injection hatası var

  2. Bu yüzden neler olduğunu görebilirsiniz bize tam kodu beyanı ve sql kaydını gönder

Bu deneyin

$db->query('SELECT item FROM table WHERE something={$something}');

Bu çalışacak