MySQL, MySQLi ve PDO arasındaki fark nedir? [kapalı]


Yanıtlar:


100

MySQL'i PHP'den kullanmanın (daha fazla) popüler yolu vardır. Bu, bazı özellikleri / farklılıkları özetliyor PHP: Bir API Seçmek :

  1. ( KULLANIMDAN KALDIRILDI ) mysql işlevleri yordamsaldır ve manuel kaçış kullanır.
  2. MySQLi , nesne yönelimli ve yordamsal sürümlerle mysql işlevlerinin yerine geçer. Hazırlanmış beyanlar için desteği vardır.
  3. PDO (PHP Veri Nesneleri), diğer birçok veritabanı arasında MySQL desteğine sahip genel bir veritabanı soyutlama katmanıdır. Hazırlanmış ifadeler ve verilerin nasıl döndürüldüğünde önemli esneklik sağlar.

PDO'yu hazırlanmış ifadelerle kullanmanızı tavsiye ederim. İyi tasarlanmış bir API'dir ve gerekirse başka bir veritabanına ( ODBC'yi destekleyenler dahil) daha kolay geçmenizi sağlar .


9
Prosedür için mysql _ * () işlevlerini kullanmanız gerektiğine dair kafa karışıklığı vardır; burada OO için mysqli! Gerçek şu ki mysqli, mysql'nin erken (PHP 4) uygulamasının tamamen yerini alıyor. Mysqli ile hem prosedür stilini hem de OO stilini kullanmak mümkündür.
Patrick Allaert

@Patrick, teşekkürler. Bunu düzelttim.
Matthew Flaschen

46

Bunlar, bir MySQL arka ucuna erişmek için farklı API'lerdir

  • MySQL tarihsel API'sıdır
  • Mysqli tarihsel API yeni versiyonu. Daha iyi performans göstermeli ve daha iyi bir işleve sahip olmalıdır. Ayrıca, API nesneye yöneliktir.
  • PDO_MySQL , PDO için MySQL'dir . PDO PHP'de tanıtıldı ve proje tüm veritabanları erişimi için ortak bir API oluşturmayı hedefliyor, bu nedenle teoride herhangi bir kodu değiştirmeden RDMS arasında geçiş yapabilmelisiniz (sorgularınızda belirli RDBM işlevi kullanmıyorsanız) ), ayrıca nesne yönelimli.

Yani ne tür bir kod üretmek istediğinize bağlı. Nesne yönelimli katmanları veya düz işlevleri tercih ediyorsanız ...

Benim tavsiyem

  1. PDO
  2. MySQLi
  3. mySQL

Ayrıca hislerime göre, mysql API muhtemelen sonraki sürümlerinde silinecekti PHP.


3
Artık bir his yok: PHP7, mysql API'sini kaldırdı, PDO ve mysqli'den ayrıldı
Manuel

3

mysqli , mysql'in geliştirilmiş sürümüdür.

PDO uzantısı , PHP'deki veritabanlarına erişmek için hafif ve tutarlı bir arayüz tanımlar. PDO arayüzünü uygulayan her veritabanı sürücüsü, veritabanına özgü özellikleri normal genişletme işlevleri olarak gösterebilir.


4
manuel dosyadan kopyalamak pek kullanışlı değildir.
XuDing

3

Özellikle, MySQLi uzantısı eski MySQL uzantısına göre aşağıdaki son derece yararlı faydaları sağlar.

OOP Arayüzü (prosedüre ek olarak) Hazırlanmış İfade Desteği İşlem + Saklanan Prosedür Desteği Daha Güzel Sözdizimi Hız İyileştirmeleri Gelişmiş Hata Ayıklama

PDO Uzantısı

PHP Veri Nesneleri uzantısı bir Veritabanı Soyutlama Katmanıdır. Spesifik olarak, bu bir MySQL arayüzü değildir, çünkü birçok veritabanı motoru için sürücüler sağlar (elbette MYSQL dahil).

PDO, tutarlı bir API sağlamayı amaçlar, yani bir veritabanı motoru değiştirildiğinde, bunu yansıtacak kod değişiklikleri minimum olmalıdır. PDO kullanırken, kodunuz normalde birçok veritabanı motorunda "sadece kullandığınız sürücüyü değiştirerek" çalışır.

PDO, veritabanları arası uyumlu olmasının yanı sıra, MySQL Sürücüsünü kullanırken hazırlanmış ifadeleri, saklanan prosedürleri ve daha fazlasını da destekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.