SORU
16 EKİM 2008, PERŞEMBE


Elde ham SQL PDO hazırlanmış deyimleri dize sorgu

Orada ham SQL dizesi PDOStatement çağırırken idam almak için bir yoldur::yürütme() bir açıklama hazırladı. Hata ayıklama amacıyla bu son derece yararlı olacaktır.

CEVAP
16 EKİM 2008, PERŞEMBE


Son SQL sorgu istediğiniz yani, parametre değerleri içine aralıklı ile sanırım. Bu hata ayıklama için yararlı olacağını anlıyorum, ama hazır deyimler çalışma biçimi değildir. Parametreler istemci tarafı, hazırlanan bir bildiri ile birlikte değil PDO asla sorgu dizesi parametreleri ile kombine erişimi olmalıdır.

SQL deyim hazırlamak ne zaman veritabanı sunucusuna gönderilir ve parametreleri çalıştırmak zaman ayrı gönderilir(). MySQL genel sorgu günlüğü değerleri yerine getirdikten sonra aralıklı ile son SQL göster(). Aşağıda Genel sorgu günlüğü alıntıdır. PDO mysql, CLİ, sorguları koştum, ama prensip aynı.

081016 16:51:28 2 Query       prepare s1 from 'select * from foo where i = ?'
                2 Prepare     [2] select * from foo where i = ?
081016 16:51:39 2 Query       set @a =1
081016 16:51:47 2 Query       execute s1 using @a
                2 Execute     [2] select * from foo where i = 1

Ayrıca eğer PDO PDO özniteliği ayarlarsanız istediğinizi elde edebilirsiniz::ATTR_EMULATE_PREPARES. Bu modda SQL içine sokmak PDO parametreleri ve çalıştırdığınızda tüm sorgu sorgu gönderir().Bu doğru hazırlanmış bir sorgu değil.İdam etmeden önce SQL string içine değişken enterpolasyon tarafından hazırlanan sorgular faydaları atlatmak olacaktır().


Re @yorum afilina:

Hayır, metin SQL sorgudeğilyürütme sırasında parametreleri ile birlikte. PDO için bir şey göstermek için var.

Eğer PDO kullanıyorsanız dahili,:: ATTR_EMULATE_PREPARES, PDO SQL sorgu bir kopyasını oluşturur ve hazırlamak ve yürütmek yapmadan önce içine parametre değerleri enterpolasyonlar. Ama PDO bu değiştirilmiş SQL sorgu göstermiyor.

PDOStatement nesnesi sorgu dizesi bir özellik$, ama bu sadece PDOStatement için yapıcı, ve sorgu parametreleri ile yeniden ne zaman güncellendi değil.

Onları yeniden sorguya maruz sormak PDO için makul bir özellik isteği olurdu. Ama bu bile sana vermezdim "PDO kullanmadığınız sürece" sorgu::ATTR_EMULATE_PREPARES. tam

Bu yüzden Haritayı yukarıdaki çözüm kullanarak MySQL sunucunun genel sorgu günlüğü, çünkü bu durumda bile bir hazırlanan Sorgu ile parametre yer tutucu yazılmış, sunucu ile parametre değerleri backfilled içine sorgu dizesi. Ama bu sadece bir sorgu yürütme sırasında oturum sırasında, yapılır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007