Benim veritabanı soyutlama ve sorgu önbelleğe alma katmanı olarak yıllardır ADOdb kullanarak oldum. Son zamanlarda çoğunlukla güvenlik için, hazırlanan tabloların geçti, ve onlar (ya da değil) uygulanan yol hakkında merak oldu.
Prepare yöntemi belgelerine Alıntı: "Returns an array containing the original sql statement in the first array element; the remaining elements of the array are driver dependent. If there is an error, or we are emulating Prepare( ), we return the original $sql string."
Ile deyim değişkeni test:
$stmt = $db->Prepare("SELECT * FROM pages WHERE id = ?");
print_r($stmt);
'Mysql' veya 'mysqli' parametresi ile açılan bağlantıları yalnızca özgün sorgu dize döndürülür - hazırlanmış deyimi taklit edilir, yani sanırım. A bağlantısı (print_r itibaren ()) 'Pdo_Mysql' dönüşleri ile açıldı:
Array (
[0] => SELECT * FROM pages WHERE id = ?
[1] => PDOStatement Object ([queryString]=>SELECT * FROM pages WHERE id = ?)
)
Ben gerçek hazırlanan açıklamada bir kesin delil olarak alabilir miyim? Eğer değilse, herkes (sorgu günlüğüne bakmak için bir şey, ya da belki MySQLProxy olarak) sunucu tarafında kontrol etmek için hızlı ve kirli bir yol biliyor mu? Ben kütüphane kaynağını okumaya çalıştım, ama yarım kayboldu ...