• Forum vBulletin altyapısından Xenforo altyapısına geçirildi, bu sebeple eski şifreleriniz ile foruma giriş yapamayacaksınız, parolamı unuttum adımından mailiniz ile şifre sıfırlayarak giriş yapabilirsiniz.

    Üyeliklerinde geçerli bir mail adresi olmadığı için sıfırlama yapamayacak kullanıcılar forum kullanıcı adlarını ve yeni şifrelerini yazarak info@maxigame.org adresine şifre sıfırlamak istediklerine dair bir mail göndersinler şifrelerini sıfırlayıp mail adreslerini güncelleyeceğiz. Şifreniz sıfırlandıktan sonra foruma giriş yapıp tekrar istediğiniz gibi değiştirebilirsiniz.

PHP'de Pratikçe Sorgu Cümlesi Oluşturmak

CottonCandy

Atlas Evren
Aileden
Aktiflik
K.Tarihi
26 Tem 2009
Mesajlar
1,087
Puanı
472
Konum
M.K.ATATÜRK
4q24RL.png


Bu döküman birkaç konuda size yardımcı olacak, pratikleştirecek sorunlar :
Çok alan (4-5+) kullanırken sorgu cümlesi oluşturmak zor
Gözden kaçırıp alanları kontrol etmek bazen mümkün olmuyor.
Yukarıdaki 2 maddeyi yapmak için satırlarca duplicate kod yazmak gerekebiliyor

Kısaca 3-4 adımda kocaman bir sorgu cümlesini oluşturacağız. Genel olarak bu dökümandaki sorun insert ve update türü sorgularda çıkan kargaşayı kolaylaştıracaktır. Zira select sorguları hem çok veri içermiyor hem de özel cümleler olabiliyor.

Bu methodolojide doğal olarak bir otomatizasyon var. Bunun için verinin düzenli olması gerekiyor. Bu noktada genelde bir dizi içinde verilerin tutulduğunu düşünelim.

PHP:
$data = array(    'ref_code' => $_GET[ref],    'phone'    => $_GET[tel],    'text'     => $_GET[yorum],    'date'     => date('Y-m-d H:i:s'),    'ip'       => $_SERVER[REMOTE_ADDR]);

Verinin anahtarları veritabanındaki alan adları ile aynı olmalı. Zaten bu veri dizisini oluştururken gerekli sql injection kontrolleri yapılıp kolayca kurtulabilinir fakat her değerde bir ton fonksiyon çağırmaya gerek yok. Kısaca :

PHP:
$data = array_map('mysql_real_escape_string', $data);

kullanımıyla tüm diziye mysql_real_escape_string() uygulayabiliriz.


Sonra zaten cümleyi oluşturmak için genel method olan sprintf ile alanları ve değerleri basacağız. Ancak işin güzelliği burada bu alanlar ve değerler kısımlarını bir sürü döngü ile çözmeyeceğiz.

PHP:
$sql = sprintf('INSERT INTO comments (%s) VALUES ("%s")',    implode(", ", array_keys($data)),    implode('", "', array_values($data)));

Gördüğünüz gibi array_keys ve array_values ile hızlıca alanlar ve değerleri alıp implode ile aralarına virgül ve tırnak ekleyebiliriz. Burada dikkat edeceğimiz şey implode sadece değerlerin aralarına tırnak ve virgül ekleyecektir. En dışda kalan tırnakları sprintf içinde tanımlayacağız.


Sonuç olarak bu noktada $sql değişkeninde, değerler ve alanlar giydirilmiş, aşağıdaki gibi bir sql cümlesi elde etmiş olacağız.




PHP:
INSERT INTO comments (ref_code, phone, text, date, ip) VALUES ("google", "1234567", "aısdfyısodaf qewrewrewqr 232fsfdsd", "2009-08-25 16:08:34", "127.0.0.1")

Bu cümleyi de mysql_query($sql) ile çalıştırıp sonucu işlemede bitiyor olay.
 
Geri
Üst