Ben en az bir veritabanı kullanan bir PHP tabanlı web sitesi yeniden mühendislik ediyorum. Orijinal versiyonu enjeksiyon saldırıları önlemek ve sayfa mantık veritabanı mantığı ayırmak için "sahte hazırlanmış-ifadeleri" (PHP fonksiyonları alıntı yaptı ve parametre değiştirme) kullanılır.
Bu PDO ve gerçek hazırlanmış deyimleri kullanan bir nesne ile bu ad-hoc işlevlerini yerine doğal görünüyordu, ama onlara benim okuma yaptıktan sonra, ben o kadar emin değilim. PDO yine harika bir fikir gibi görünüyor, ancak hazırlanan tabloların birincil satış noktalarından biri ben asla hangi ... onları yeniden mümkün ediliyor. İşte benim Kurulum:
- Tablolar, bütün trivially basittir. En şeklinde olan
SELECT foo,bar FROM baz WHERE quux = ? ORDER BY bar LIMIT 1
. Çok en karmaşık deyim böyle üç seçerUNION ALL
s ile birlikte katıldı basitçe. - Her sayfa yürütür at most bir deyim vurdu ve sadece bir kez çalıştırır.
- Ben barındırılan bir ortamda yaşıyorum ve şahsen herhangi bir "stres testleri" yaparak kendi sunucularını çarparak nedenle temkinli.
Hazırlanmış deyimleri kullanarak, en azından ben yapıyorum veritabanı sayısını turu gezileri katına çıkacağını göz önüne alındığında, ben onları kaçınarak daha iyi miyim? Ben parametreleriyle ve enjeksiyon savunma yararı koruyarak PDO::MYSQL_ATTR_DIRECT_QUERY
birden fazla veritabanı gezileri yükü önlemek için kullanabilir miyim? Veya hazır deyimi API tarafından kullanılan ikili görüşmeleri bu konuda endişe etmemesi gerektiğini olmayan hazırlanmış sorguları yürütme kıyasla yeterince iyi yapabilirim?
EDIT:
Tüm iyi tavsiye, millet için teşekkürler. Farklı bakış açıları çok - bu "kabul" gibi birden fazla cevabı işaretleyiniz isterdim biridir. Sonuçta da, ben vermek zorunda rick onun yüzünden ... onun cevabını vermeden ben blissfully kapalı gitmiş olurdu ve hatta following herkesin tavsiyesine sonra tamamen yanlış Şey yapılır. :-)
Emulated öyle tablolarını!