Ben daha önce de farklı kurslarda kullanmıştım aslında bu metodu. Ama hiç bir şey anlatılmadan direkt nasıl kullanacağımızı göstermişti hocamız. bindparam kullanmadan direkt execute içinde array kullanarak bildiriyorduk değişkenleri. Şimdi merak ettiğim ise, execute içinde array ile belirtmek mi daha güvenilir olur yoksa bindparam ile belirtmek mi? İkisi arasında güvenlik açısından ve ya performans açısından fark olur mu ? Çünkü birinde direkt belirtirken diğerinde hem içeriği hem veri türünü belirtiyoruz.
Ek olarak bir sorum daha olacak;
Yine o kursta veri güncellerken ve eklerken yapı hep şöyle idi;
prepare(“INSERT INTO kisi set ad=:u_ad, soyad=:u_soyad”);
ardından yine execute array ile bildirip veritabanına kayıt ettiriyorduk.
Ama bugüne kadar hep şöyle gördüm ki gerek sizden gerek okul hayatım boyunca da;
insert into tabloadi (sutun1,sutun2) values (‘deger1′,’deger2’)
bu şekilde kullanılıyor. Sizce hangisi mantıklı, diğerini kullanmak mı daha iyi yoksa sizin gösterdiğiniz şekilde mi?
Teşekkür ederim.
emre gilimörtmez
Bunların hepsi farklı yöntemlerdir, kim hangisini kullanmak istiyorsa kullanabilir. Aralarında performansı inanılmaz etkileyecek farklar yok.
array vererekte kullanabilirsin. Aşağıdaki yöntemleri kullanarakta verebilirsin. Ancak şöyle bir bilgi var;
Biz verileri aldığımızda bir süzgeçten geçiyoruz ya bu 1.güvenlik daha sonra prapare kullanarak zaten 2. güvenlik yapmış oluyoruz. Buraada berileri array olarak gönderirsek bu 2 güvenlikte kalacaktır. Yurt dışı forumlarında konuşulanlara göre Bind_param ile aktarmak ekstra bir güvenlik sağlıyor ve 3.güvenlik yapmış oluyoruz. Yani yazım şekli olarak diğerlerine göre uzun bir yazımı olabilir. Tek tek belirtiyoruz ama çok fazla veri yok ise bind_param kullanılabilir. Aşağıda yine kullanabilecek bazı yöntemleri yazdım. Hangisini kullanmak istiyorsan kullanabilirsin.
1. Kullanım
insert into tabloadi (sutun1,sutun2) values (‘deger1′,’deger2’)
2.kullanım
prepare(“INSERT INTO kisi set ad=:u_ad, soyad=:u_soyad”); // buna isim parametreli aktarım denir.
bindParam(‘:u_ad’, $ad, PDO::PARAM_STR);
bindParam(‘:u_soyad’, $soyad, PDO::PARAM_STR);
3.kullanım
prepare(“INSERT INTO kisi set ad=?,soyad=:?”); // SORU işareti imli kullanım denir
bindParam(1, $ad, PDO::PARAM_STR);
bindParam(2, $soyad, PDO::PARAM_STR);
mert melih
Teşekkür ederimmmm