Günümüzde, "Hazır deyimler" Herkes bir veritabanına sorgular göndererek tavsiye tek yol gibi görünüyor. Hatta saklı yordamlara için hazırlanmış ifadeler kullanmak tavsiyeler bakın. Ancak, fazladan sorgu yapmak ifadeleri gerektirir hazırlanmış - ve son kısa zaman - onlar INSERT / UPDATE sorgularının hattı için sadece yararlı olduğuna ikna ediyorum.
Birisi bu beni düzeltebilir umuyorum, ama sadece CSS şey "Tablolar kötülük vardır" bütünün bir tekrarı gibi görünüyor. Değil sekmeli veri - düzenleri için kullanılırsa masalar sadece kötülük vardır. Sekmeli veri DIV bulunuyor kullanarak WC3 bir tarzı ihlalidir.
Bilge, düz SQL (veya AR adlı oluşturulan) çok daha kullanışlı en sitelerinde kullanılacak sorgular,% 80 gibi görünüyor gibi tek bir tekrar bu sayfa yük değil tekrarlanması SELECT (ben script dilleri hakkında konuşuyorum Burada PHP gibi). Neden aşırı vergileri DB sadece kaldırılmadan önce bir kez çalıştırmak için bir açıklama hazırlamak yapmak istiyorsunuz?
MySQL:
A prepared statement is specific to the session in which it was created. If you terminate a session without deallocating a previously prepared statement, the server deallocates it automatically.
Yani senaryonun sonunda PHP bağlantısını otomatik kapanacak ve yalnızca komut sonraki yüküne yeniden oluşturulan sahip hazırlanmış deyimi kaybedersiniz.
Ben bir şey eksik veya bu performansı azaltmak için sadece bir yoludur muyum?
: GÜNCELLEME:
Ben her komut dosyası için yeni bağlantıları varsayarak yaşıyorum kafama dank etti. Ben kalıcı bir bağlantısı kullanıldığında ise daha sonra bu sorunlar yok olacağını varsayıyorum. Bu doğru mudur?
: Update2:
Onlar not a very good option web çoğu içindir - - hareketleri kullanabilirsiniz, özellikle eğer kalıcı bağlantılarının çözüm bile görünüyor. Yani silbaştan gitmek için aşağıdaki kriterler başka bir şey sahip değilim ...
: Update3:
Çoğu kişi sadece ifade tam sorunu açıklamak değil "hazırlanmış deyimleri SQL enjeksiyon karşı korumak" tekrarlayın. Her DB kütüphane için sağlanan "kaçış" yöntemi also protects against SQL injection. Ama bundan daha fazladır:
When sending a query the normal way, the client (script) converts the data into strings that are then passed to the DB server. The DB server then uses CPU power to convert them back into the proper binary datatype. The database engine then parses the statement and looks for syntax errors.
When using prepared statements... the data are sent in a native binary form, which saves the conversion-CPU-usage, and makes the data transfer more efficient. Obviously, this will also reduce bandwidth usage if the client is not co-located with the DB server.
...The variable types are predefined, and hence MySQL take into account these characters, and they do not need to be escaped.
Nihayet bu konuda boğaz beni ayarlanması için OIS sayesinde.