Php Dersleri

PDO yada MySQLi Kullanmazsak Ne Olur?

Php’nin mysql_* ifadelerinden desteğini kaldırmasından sonra PDO ve mysqli aktif olarak kullanılmaya başlandı. Bu durumda php bilgisinin sadece mysql_* ifadelerinden ibaret olanlar, pdo yada mysqli mi öğrenmeli, yoksa bu şekilde bırakıp devam mı etmeli? Gibi bir çok fazla soruyla karşılaşacaklardır. Öncelikle hala mysql_* ifadeleri kullanmaya devam ederseniz şu şekilde bir hata ile karşılaşmanız çok büyük olasıdır;

This extension is not recommended for writing new code. Instead, either the mysqli or PDO_MySQL extension should be used. See also the MySQL API Overview for further help while choosing a MySQL API.

Bu şekilde bir uyarıyla karşılaştığınızda yapmanız gereken tek bir şey var. Oda sisteminizi PDO yada MySQLi ile tekrardan derlemeniz. Yine de bir şekilde mysql_* ifadelerini çalıştırmayı başarıp sorunsuz bir şekilde sistemin çalışmasını sağlarsanız da bu seferde güvenlik açıkları olmak üzere bir çok sorunla karşılaşacaksınız.

Nedir Bu PDO ve MySQLi?

Öncelikle PDO ve MySQLi arasında bir seçim yapmanız gerekmetedir. PDO ve MySQLi arasındaki farkı daha iyi anlayabilmeniz adına PDO ve MySQLi Karşılaştırma sonuçlarına bakabilirsiniz.

PDO, yani “PHP Data Objects/PHP Veri Objeleri” en kısaltılmış tanımıyla, hafif ve tutarlı bir şekilde veri tabanına erişim sağlayan ara yüzdür. Adından da anlaşılacağı üzere “Nesne Tabanlı Programlama” arayüzüne sahiptir. Bundan dolayı da bir çok veri tanıyla çalışabilirsiniz.

MySQLi, yani “MySQL Improved Extension/Geliştirilmiş MySQL eklentisi” olarak kısaltılmıştır. MySQLi, mysql_* ifadesine oranla daha faza estetik ve güvenlik sağlamaktadır. MySQLi sadece MySQL veritabanı ile çalışmaktadır. PDO gibi bir çok veri tabanında çalışmanız mümkün değil.

MySQLi ve MySQL ismen bir birine çok yakın olduğu için bir çok soru da akıllarda kalabilir. Kalmaması için bu iki ifadeyi karşılaştırarak tüm soruları yanıtlamış olalım.

MySQLi ve MySQL Arasındaki Temel Farklar

  • MySQLi eklentisi çıkan tüm yeniliklere uyum sağlayabilir.
  • MySQLi güvenilir, geliştirilmesi kolay bir yapı sağlardır.
  • Sorgu sonucu dönen veriler ilave işlemlere gerek kalmadan nesneye atanabilir.
  • MySQLi kullanmanızda SQL injection ve diğer saldırıları karşı koruma sağlayabilirsiniz.
  • MySQLi kullanımında daha yüksek performans alabilirsiniz.
  • MySQLi verita banı karışıklığını önlemektedir.

PDO ve MySQLi Hız Testi

İsterseniz aynı verilerle yapılan MySQL işlemlerinde PDO ve MySQLi test edelim. Hangisi daha iyi sonuç doğuracak ve işlem süreleri bize nasıl sonuçlar verecek. Bu testimizi yaparken 100.000 veri üzerinden gerçekleştireceğiz.

TürVeri AdetiİşlemSüre
PDO100000Ekleme (INSERT)13.079864025116
MySQLi100000Ekleme (INSERT)19.463269948959
PDO100000Seçim (SELECT)19.150141954422
MySQLi100000Seçim (SELECT)27.461564064026
PDO100000Güncelleme (UPDATE)16.263291120529
MySQLi100000Güncelleme (UPDATE)22.705169916153
PDO100000Silme (DELETE)14.891561985016
MySQLi100000Silme (DELETE)21.583913087845

Yukarıdaki tablodan yola çıkacak olursak, 100.000 veri işlemede tüm alanlarda PDO daha üstün çıktı. Yuvarlak hesaplayacak olursak veri ekleme işlemlerinde 6, seçim işlemlerinde 8, güncellemede 6, silmedeyse 7 saniye fark bulunmakta. 100.000 veri de çalışılacak olan değerlerin sonuçları arasında ki fark bu şekilde. Tabi ben o kadar veriyle çalışmayacağım da diyebilirsiz. Ama bu sonuçları değiştirmeyecektir. Dilerseniz şimdi de 1.000.000 veri üzerinden yeni bir test yapalım.

TürVeri AdetiİşlemSüre
PDO1000000Ekleme (INSERT)133.66887807846
MySQLi1000000Ekleme (INSERT)202.65716481209
PDO1000000Seçim (SELECT)197.49514484406
MySQLi1000000Seçim (SELECT)283.04056501389
PDO1000000Güncelleme (UPDATE)164.97567796707
MySQLi1000000Güncelleme (UPDATE)231.89973783493
PDO1000000Silme (DELETE)150.77637290955
MySQLi1000000Silme (DELETE)232.20053887367

Görüldüğü üzere veri miktarı arttırkça PDO ve MySQLi kodlamasından doğan farkta göze çarpmakta. Bir milyon veri ile çalıştığınızda pdo ve mysqli ifadelerini kullanmanız durumunda yapacağınız işlemlere göre bu şekilde süreler hesaplanacaktır. Yinede bu bu verileri çok göz önünde bulundurmadan PDO yada MySQLi konusunda size uygun seçimleri yapmanız gerekmektedir.

Sonuç Olarak

Mysql_* ifadelerini kullanmaya bir şekilde devam edecek olursanız yukarıda ki bir çok özellik ve kullanımlardan mahrumkalmış olacaksınız. Mysql_* ifadelerini kullanmak alacağınız tüm tedbirlere rağmen yetersiz kalacaktır. Hız kaybınızın olması da gabası.

Bir önceki yazım olan Php PDO Türkçe Karakter Sorunu Çözümü başlıklı makalemde pdo türkçe karakter, php ve php dersleri hakkında bilgiler vermekteyim.

İlgilizi Çekecek Konular

Php ile Seçili 2 Tarih Arasındaki Verileri Listeleme

ibrahim Çevrük

Css Kodlarında Php Kodu Kullanmak ve Php ile Css Kodlarını Sıkıştırma

ibrahim Çevrük

Php ile xml Dosyasını Okutmak

ibrahim Çevrük

Yorum Giriniz