php içinde mysqli'nin vs mysql [kapalı]

6 Cevap php

Hangisi daha iyi, mysql veya mysqli nedir? Ve neden? Hangi kullanmalıyım?

Ben performans açısından iyi değil demek, ancak diğer ilgili özelliktir.

6 Cevap

Eğer bir göz varsa, MySQL Improved Extension Overview, bu size ikisi arasındaki farklar hakkında bilmeniz gereken her şeyi söylemelidir.

The main useful features are: - an Object-oriented interface - support for prepared statements - support for multiple statements - support for transactions - enhanced debugging capabilities - embedded server support.

MySQL, mysqli'nin ve PDO'de arasında seçim yardımcı olmak için özel bir kılavuz sayfası bulunmaktadır

PHP ekibi mysqli veya yeni bir gelişme için PDO_MYSQL önerir:

Bu mysqli veya PDO_MYSQL uzantıları da kullanılması tavsiye edilir. Bu yeni gelişme için eski mysql uzantısı kullanmak için tavsiye edilmez. Ayrıntılı bir özellik karşılaştırma matrisi aşağıda verilmiştir. Üç uzantıları genel performansı yaklaşık olarak aynı olarak kabul edilir. Uzatma performansı bir PHP web isteği toplam çalışma süresi yalnızca bir kısmını katkıda rağmen. Çoğu zaman, etki% 0.1 kadar düşüktür.

Sayfa da uzatma API'leri karşılaştıran bir özellik matrisi vardır. Aşağıdaki gibi mysqli'nin 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

De kütüphaneleri (libmysql karşı yeni mysqlnd) karşılaştıran ek bir özellik matrisi var

ve çok kapsamlı bir blog makale de

Ben mysqli kullanarak terk ettiler. Bu sadece çok kararsızdır. Ben kazasında PHP mysqli kullanarak ancak mysql paketi ile sadece iyi çalışır ki sorguları yaşadım. Ayrıca, mysqli crashes on LONGTEXT columns. Bu hata en azından 2005 yılından bu yana çeşitli şekillerde gündeme gelmiştir and remains broken. Ben dürüst hazırlanmış deyimleri kullanmak istiyorum ama mysqli sadece yeterince güvenilir değildir (ve kimse sabitleme rahatsız görünüyor). Eğer gerçekten istiyorsan hazırlanmış tablolar PDO ile gitmek.

MySQLi MySQL geliştirilmiş anlamına gelir. Kullanımı şeyleri kolaylaştırır MySQL bağlamaları bir nesne yönelimli arayüz. O da (very yararlıdır) hazırlanmış deyimleri için destek sunuyor. Eğer PHP 5 kullanımı MySQLi iseniz.

Ne iyi olduğunu PDO olduğu; Bir az crufty arayüz ve aynı MySQLi olarak aynı özellikleri sunar.

SQL enjeksiyon olanaklarını ortadan kaldırır, çünkü hazırlanmış deyimleri kullanarak iyidir; yuvarlak-gezileri sayısını artırır çünkü sunucu tarafı hazırlanmış deyimleri kullanarak kötü.

Bana, hazırlanan tablolar için sahip olunması gereken bir özelliktir. daha doğrusu, parametre (yalnızca hazırlanmış tablolar üzerinde çalıştığı) bağlayıcı. SQL komutları içine dizeleri eklemek için sadece gerçekten aklı başında bir yoldur. i gerçekten 'kaçan' fonksiyonları güvenmiyorum. DB bağlantı neden parametreler için bir ASCII sınırlı alt protokolünü kullanmak, bir ikili protokol nedir?