Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPHP Günleri 2013#1mysql_* Fonksiyonları Ömrünü DoldurmakÜzere. Peki Şimdi Ne Olac...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trAdil İlhanYazılım Geliştirici – Özgür Yazılım A.Ş.@adil_ilhanwww.adililhan.comadi...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPHP ve MySQLBitirim İkili● PHP denilince ilk akla gelenlerden birisi MySQL.● Yıll...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* dan kasıt nedir?mysql_connect,mysql_query,mysql_fetch_assoc,mysql_fetch_a...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trAma artık mysql_* fonksiyonlarıömrünü doldurmak üzere!
Özgür Yazılım A.Ş.www.ozguryazilim.com.trMadem ömrü doldu neden hâlâkullanılıyor?● Alışkanlık!● PHP4ten beri mysql_connect...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trAlternatif nedir?Şu an mysql_* fonksiyonları için iki iyi alternatif var:1) PDO (...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPeki alternatifleri var ama, mysql_*fonksiyonları neden artıkkullanılmamalı?
Özgür Yazılım A.Ş.www.ozguryazilim.com.trArtık deprecated (önerilmemektedir)● PHP geliştiricileri mysql_* fonksiyonlarını“...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPrepared statement (hazır deyim) özelliği yok!Prepared stament ne ola ki?
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPrepared Statementlar(Hazır Deyimler)● Daha performanslı● Birçok kez çalışacak so...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trÖrnek yazıma geçmeden önce...● MySQLide MySQL veritabanına bağlanmak:$db = new my...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trÖrnek yazımı şöyle:$db->prepare(INSERT INTO seminer (ad, soyad) VALUES (:adi, :so...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trParametre Bağlamak (Bind Param)İsimli parametreler PDOda var.$q = $db->prepare(IN...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trParametre Bağlamak (Bind Param)Soru işaretli değer atamalar hem PDOda hem MySQLid...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trBöylece ne elde ettik?● Daha güvenli sorgu çalıştırma imkanı● mysql_real_escape_s...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trBöylece ne elde ettik?● mysql_* fonksiyonlarından daha hızlı bir sorgualtyapısı.●...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonlarınınyeteneksizliği sadece bu kadar mı?Tabii ki hayır :)
Özgür Yazılım A.Ş.www.ozguryazilim.com.trDoğrudan TransactionDesteklenmiyormysql_* fonksiyonları doğrudan transactionyapma...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPDO ve Mysqli Varsayılan OlarakTransaction Destekliyor● PDOda ve Mysqlide yazılım...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_ Fonksiyonları Tek SeferdeBirden Fazla Sorgu (Multiple queriesYapamıyor●● B...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonları OOP arayüzüdesteklemiyor● OOP mimarisine uygun kod yazdınız...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trSürekli PDO ve Mysqli diyorsun dahangisini seçmek lazım?
Özgür Yazılım A.Ş.www.ozguryazilim.com.trİkisi de iyi, ama aralarında ufaktefek farklar var. O farklarla çok iyioldu çok d...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trİyi güzel de bu fonksiyonlara göçetmek o kadar kolay değil ki...Acı gerçek... :(
Özgür Yazılım A.Ş.www.ozguryazilim.com.tr● Piyasada hâlen birçok projede mysql_*fonksiyonları kullanılıyor. Bunların bir ş...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonlarını avcumun içigibi biliyorum. Yeni fonksiyonlarıöğrenmek bir...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trEvet, doğru bir öngörü.Yeni fonksiyonlar iş çıkaracak.Ancak yeni sürümler çıktıkç...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trPeki nasıl göç edeceğiz?● Eğer sorguları bir arayüz üzerindenyapıyorsanız işiniz ...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonlarını güncelfonksiyonlara göç ettiren bir betikolsa ne güzel ol...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trSıkmayın canınızı o da var :)● Oracle, bu göç problemi için bir betik yayınladı.●...
Özgür Yazılım A.Ş.www.ozguryazilim.com.trSorularınız?Adil İlhanYazılım Geliştirici – Özgür Yazılım A.Ş.www.adililhan.comww...
Upcoming SlideShare
Loading in …5
×

PHP Günleri #1 / mysql_* Fonksiyonları Ömrünü Doldurmak Üzere. Peki Şimdi Ne Olacak?

782 views

Published on

25 Mayıs 2013 tarihinde, PHP Günleri #1'de mysql_* (mysql_connect, mysql_query vb.) fonksiyonlarının neden kullanılmaması konusu üzerine yaptığım sunumun dosyası.

Published in: Technology

PHP Günleri #1 / mysql_* Fonksiyonları Ömrünü Doldurmak Üzere. Peki Şimdi Ne Olacak?

  1. 1. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPHP Günleri 2013#1mysql_* Fonksiyonları Ömrünü DoldurmakÜzere. Peki Şimdi Ne Olacak?
  2. 2. Özgür Yazılım A.Ş.www.ozguryazilim.com.trAdil İlhanYazılım Geliştirici – Özgür Yazılım A.Ş.@adil_ilhanwww.adililhan.comadil.ilhan@ozguryazilim.com.tr
  3. 3. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPHP ve MySQLBitirim İkili● PHP denilince ilk akla gelenlerden birisi MySQL.● Yıllarca isimleri birlikte anıldı.● Yıllarca mysql_* fonksiyonları kullanıldı ve hâlâkullanılıyor.
  4. 4. Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* dan kasıt nedir?mysql_connect,mysql_query,mysql_fetch_assoc,mysql_fetch_array vb.
  5. 5. Özgür Yazılım A.Ş.www.ozguryazilim.com.trAma artık mysql_* fonksiyonlarıömrünü doldurmak üzere!
  6. 6. Özgür Yazılım A.Ş.www.ozguryazilim.com.trMadem ömrü doldu neden hâlâkullanılıyor?● Alışkanlık!● PHP4ten beri mysql_connect var.● Yeniliklere ayak uyduramama● “Teknoloji gelişiyor” lafı PHP için de geçerli.● Sunucularda eski PHP sürümleri var● Sunucudaki sürüm eski olunca, güncel fonksiyonlarkullanılamıyor.
  7. 7. Özgür Yazılım A.Ş.www.ozguryazilim.com.trAlternatif nedir?Şu an mysql_* fonksiyonları için iki iyi alternatif var:1) PDO (Php Data Objects)2) mysqli (MySQL Improved Extension)
  8. 8. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPeki alternatifleri var ama, mysql_*fonksiyonları neden artıkkullanılmamalı?
  9. 9. Özgür Yazılım A.Ş.www.ozguryazilim.com.trArtık deprecated (önerilmemektedir)● PHP geliştiricileri mysql_* fonksiyonlarını“resmi” olarak önermiyor.● Geliştirilmesi durdu.● 5.5.0da deprecated olacak (önerilmemeyebaşlanacak).
  10. 10. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPrepared statement (hazır deyim) özelliği yok!Prepared stament ne ola ki?
  11. 11. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPrepared Statementlar(Hazır Deyimler)● Daha performanslı● Birçok kez çalışacak sorguyu önce derle, sonraki sorgulardadaha performanslı çalışsın.● Daha güvenli● mysql_real_escape_string ve türevlerinden kurtuluş● Tırnaklardan sorguyu korur.● MySQL 4.1den beri destekliyor.● Yazımı daha kolay ve okunaklı (Bana göre:))
  12. 12. Özgür Yazılım A.Ş.www.ozguryazilim.com.trÖrnek yazıma geçmeden önce...● MySQLide MySQL veritabanına bağlanmak:$db = new mysqli(localhost, root, 123, seminer);$db = mysqli_connect(localhost, root, 123, seminer);● PDOda MySQL veritabanına bağlanmak:$db = new PDO(mysql:dbname=seminer;host=localhost;, root, 123);
  13. 13. Özgür Yazılım A.Ş.www.ozguryazilim.com.trÖrnek yazımı şöyle:$db->prepare(INSERT INTO seminer (ad, soyad) VALUES (:adi, :soyadi));(Bu kullanım şu an sadece PDOda var.)Bir diğeri:$db->prepare(INSERT INTO seminer (ad, soyad) VALUES (?, ?));(Bu kullanımı PDO ve Mysqli destekliyor.)
  14. 14. Özgür Yazılım A.Ş.www.ozguryazilim.com.trParametre Bağlamak (Bind Param)İsimli parametreler PDOda var.$q = $db->prepare(INSERT INTO seminer (ad, soyad, yas) VALUES (:adi, :soyadi, :yasi));$q->bindParam(:adi,$ad);$q->bindParam(:soyadi,$soyad);$q->bindParam(:yasi,$yas);
  15. 15. Özgür Yazılım A.Ş.www.ozguryazilim.com.trParametre Bağlamak (Bind Param)Soru işaretli değer atamalar hem PDOda hem MySQLide var.Mysqlide$st = $db->prepare(INSERT INTO seminer (ad, soyad, yas) VALUES (?, ?, ?));$st->bind_param(ssi, $ad, $soyad, $yas);PDOda$st->execute(array($ad, $soyad, $yas));
  16. 16. Özgür Yazılım A.Ş.www.ozguryazilim.com.trBöylece ne elde ettik?● Daha güvenli sorgu çalıştırma imkanı● mysql_real_escape_string vs. yeteri kadar iyideğiller. Ekstra kod yazmak gerekiyor.● Mysqli ve PDOda bind param ile güvenlik işiniPHPye bırakıyoruz.
  17. 17. Özgür Yazılım A.Ş.www.ozguryazilim.com.trBöylece ne elde ettik?● mysql_* fonksiyonlarından daha hızlı bir sorgualtyapısı.● MySQL, sorguyu ilk seferinde analiz edip, herdefasında aynı işlemleri tekrarlamıyor.Parametrelere uygun olarak tampondan veriyisunuyor.
  18. 18. Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonlarınınyeteneksizliği sadece bu kadar mı?Tabii ki hayır :)
  19. 19. Özgür Yazılım A.Ş.www.ozguryazilim.com.trDoğrudan TransactionDesteklenmiyormysql_* fonksiyonları doğrudan transactionyapmaya olanak sağlamıyor.Ekstra fonksiyonlar yazılarak, veritabanınacommit, rollback işlemleri yaptırılıyor.
  20. 20. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPDO ve Mysqli Varsayılan OlarakTransaction Destekliyor● PDOda ve Mysqlide yazılımcının kolaycatransaction yapabilmesi için gerekli metodlarsunuluyor.mysql_* fonksiyonlarındaki gibi her rol (start,commit, rollback) için ekstra tanımlamazahmetine girilmiyor.
  21. 21. Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_ Fonksiyonları Tek SeferdeBirden Fazla Sorgu (Multiple queriesYapamıyor●● Bu sorguyu tek seferde mysql_ fonksiyonlarıişleyemiyor. Bu sorguyu ancak PDO veyaMysqli ile çalıştırabilirsiniz.
  22. 22. Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonları OOP arayüzüdesteklemiyor● OOP mimarisine uygun kod yazdınız amamysql_connect ile veritabanına bağlandınız.● Metodlara erişirken -> kullanıyorsunuz amaveritabanı işlemleri için alt çizgi (underscore)kullanmak zorundasınız.● Göz yorucu değil mi? :)
  23. 23. Özgür Yazılım A.Ş.www.ozguryazilim.com.trSürekli PDO ve Mysqli diyorsun dahangisini seçmek lazım?
  24. 24. Özgür Yazılım A.Ş.www.ozguryazilim.com.trİkisi de iyi, ama aralarında ufaktefek farklar var. O farklarla çok iyioldu çok da güzel oldu.● PDO ile 12 farklı veritabanına bağlanabilirsiniz.● PDO ile isimli parametre ataması dayapabilirsiniz.● PDOda sadece OOP kullanabilirsiniz.● Mysqlide hem OOP hem proceduralkullanılabilir.
  25. 25. Özgür Yazılım A.Ş.www.ozguryazilim.com.trİyi güzel de bu fonksiyonlara göçetmek o kadar kolay değil ki...Acı gerçek... :(
  26. 26. Özgür Yazılım A.Ş.www.ozguryazilim.com.tr● Piyasada hâlen birçok projede mysql_*fonksiyonları kullanılıyor. Bunların bir şekilde göçetmesi gerekiyor.● Göç yapılmadığı takdirde her yeni sürümdekodunuz güncel teknolojilerden daha da geri dekalacak.● Ancak iş dünyasında bu tarz değişimler yapmakoldukça zor. Bunun başlıca sebeplerinden birisi de“vakit olmaması”. Vakit yetersiz olduğu için gereklideğişimler yapılamıyor. Yapılsa bile birçoğunun unittestleri yapılmıyor.
  27. 27. Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonlarını avcumun içigibi biliyorum. Yeni fonksiyonlarıöğrenmek bir sürü iş çıkaracak.
  28. 28. Özgür Yazılım A.Ş.www.ozguryazilim.com.trEvet, doğru bir öngörü.Yeni fonksiyonlar iş çıkaracak.Ancak yeni sürümler çıktıkça,kodunuzu güncellemediğiniztakdirde kodunuz geride kalacak.Bu ileride daha çok zahmetoluşturacak.
  29. 29. Özgür Yazılım A.Ş.www.ozguryazilim.com.trPeki nasıl göç edeceğiz?● Eğer sorguları bir arayüz üzerindenyapıyorsanız işiniz nispeten daha kolay.● Arayüz?● Ya arayüz yoksa?– O zaman işiniz zorlaşacaktır. :(
  30. 30. Özgür Yazılım A.Ş.www.ozguryazilim.com.trmysql_* fonksiyonlarını güncelfonksiyonlara göç ettiren bir betikolsa ne güzel olurdu...
  31. 31. Özgür Yazılım A.Ş.www.ozguryazilim.com.trSıkmayın canınızı o da var :)● Oracle, bu göç problemi için bir betik yayınladı.● Şu adreste bulabilirsiniz: http://bit.ly/ttklS8● Betik sayesinde mysql fonksiyonlarını mysqlifonksiyonlarına çevirebiliyorsunuz.● Betik oldukça başarılı.● Örneğin; WordPressi dönüştürünce birkaçwarning dışında sistem eskisi gibi çalışıyor.
  32. 32. Özgür Yazılım A.Ş.www.ozguryazilim.com.trSorularınız?Adil İlhanYazılım Geliştirici – Özgür Yazılım A.Ş.www.adililhan.comwww.twitter.com/adil_ilhanwww.linkedin.com/in/adililhan

×