Hangisi daha iyi, MySQL veya MySQLi? Ve neden? Hangisini kullanmalıyım?
Sadece performans açısından değil, diğer ilgili özelliklerden de daha iyi demek istiyorum.
Hangisi daha iyi, MySQL veya MySQLi? Ve neden? Hangisini kullanmalıyım?
Sadece performans açısından değil, diğer ilgili özelliklerden de daha iyi demek istiyorum.
Yanıtlar:
MySQL Geliştirilmiş Uzantıya Genel Bakış'a bakarsanız , ikisi arasındaki farklar hakkında bilmeniz gereken her şeyi size bildirmelidir.
Ana kullanışlı özellikler şunlardır:
mysql_*()
artık kullanımdan kaldırıldı ve yakında kaldırılacak . Yeni kod için kullanmamalısınız.
Mysql, mysqli ve PDO arasında seçim yapmaya yardımcı olmak için ayrılmış bir manuel sayfa var
PHP ekibi yeni geliştirme için mysqli veya PDO_MySQL'i önerir:
Mysqli veya PDO_MySQL uzantılarının kullanılması önerilir. Yeni geliştirme için eski mysql uzantısını kullanmanız önerilmez. Ayrıntılı bir özellik karşılaştırma matrisi aşağıda verilmiştir. Her üç uzantının genel performansının yaklaşık olarak aynı olduğu düşünülmektedir. Eklentinin performansı, bir PHP web isteğinin toplam çalışma süresinin yalnızca bir kısmına katkıda bulunur. Genellikle, etki% 0.1 kadar düşüktür.
Sayfa ayrıca, uzantı API'larını karşılaştıran bir özellik matrisine sahiptir. MySQL ve MySQL API arasındaki temel farklar şunlardır:
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
Adresindeki kütüphaneleri (yeni mysqlnd ve libmysql'e karşı) karşılaştıran ek bir özellik matrisi vardır.
ve çok kapsamlı bir blog makalesi
MySQLi kullanarak terk ettim. Çok dengesiz. Ben mysqli kullanarak PHP çökmesini sorguları vardı ama mysql paketi ile gayet iyi çalışır. Ayrıca Mysqli LONGTEXT sütunlarında çöküyor . Bu hata en az 2005'ten bu yana çeşitli şekillerde ortaya çıkmıştır ve kırılmıştır . Dürüst olmak gerekirse hazırlanan ifadeleri kullanmak istiyorum ama mysqli sadece yeterince güvenilir değil (ve kimse bunu düzeltmek için rahatsız görünüyor). Gerçekten hazırlanmış ifadeler istiyorsanız PDO ile gidin.
Daha iyi olan PDO'dur; daha az kaba bir arayüz ve aynı zamanda MySQLi ile aynı özellikleri sunar.
Hazırlanan ifadelerin kullanılması iyidir çünkü SQL enjeksiyon olasılıklarını ortadan kaldırır; sunucu tarafında hazırlanmış ifadelerin kullanılması kötüdür, çünkü gidiş-dönüş sayısını arttırır.
benim için hazırlanmış ifadeler olmazsa olmaz bir özellik. daha doğrusu, parametre bağlanması (sadece hazırlanmış ifadeler üzerinde çalışır). SQL komutlarına dize eklemenin tek gerçekten akıllıca yolu budur. gerçekten 'kaçan' işlevlere güvenmiyorum. DB bağlantısı bir ikili protokol, neden parametreler için ASCII sınırlı bir alt protokol kullanalım?