Was ist besser, MySQL oder MySQLi? Und warum? Welches soll ich verwenden?
Ich meine besser, nicht nur in Bezug auf die Leistung, sondern auch in Bezug auf andere relevante Funktionen.
Was ist besser, MySQL oder MySQLi? Und warum? Welches soll ich verwenden?
Ich meine besser, nicht nur in Bezug auf die Leistung, sondern auch in Bezug auf andere relevante Funktionen.
Antworten:
Wenn Sie sich MySQL Improved Extension Overview ansehen , finden Sie hier alles, was Sie über die Unterschiede zwischen den beiden wissen müssen.
Die wichtigsten nützlichen Funktionen sind:
mysql_*()
ist jetzt veraltet und wird bald entfernt . Sie sollten es nicht für neuen Code verwenden.
Es gibt eine Handbuchseite, die Ihnen bei der Auswahl zwischen MySQL, MySQL und PDO hilft
Das PHP-Team empfiehlt mysqli oder PDO_MySQL für die Neuentwicklung:
Es wird empfohlen, entweder die Erweiterungen mysqli oder PDO_MySQL zu verwenden. Es wird nicht empfohlen, die alte MySQL-Erweiterung für neue Entwicklungen zu verwenden. Eine detaillierte Merkmalsvergleichsmatrix finden Sie unten. Die Gesamtleistung aller drei Erweiterungen wird als ungefähr gleich angesehen. Obwohl die Leistung der Erweiterung nur einen Bruchteil der Gesamtlaufzeit einer PHP-Webanforderung ausmacht. Oft beträgt die Auswirkung nur 0,1%.
Die Seite enthält auch eine Funktionsmatrix, in der die Erweiterungs-APIs verglichen werden. Die Hauptunterschiede zwischen mysqli und mysql API sind folgende:
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
Es gibt eine zusätzliche Feature-Matrix, in der die Bibliotheken (new mysqlnd versus libmysql) unter verglichen werden
und ein sehr gründlicher Blogartikel bei
Ich habe die Verwendung von mysqli aufgegeben. Es ist einfach zu instabil. Ich hatte Abfragen, die PHP mit mysqli zum Absturz brachten, aber mit dem mysql-Paket einwandfrei funktionieren. Auch mysqli stürzt in LONGTEXT-Spalten ab . Dieser Fehler wurde seit mindestens 2005 in verschiedenen Formen gemeldet und ist weiterhin behoben . Ich würde ehrlich gesagt gerne vorbereitete Anweisungen verwenden, aber mysqli ist einfach nicht zuverlässig genug (und niemand scheint sich die Mühe zu machen, es zu reparieren). Wenn Sie wirklich vorbereitete Anweisungen wünschen, gehen Sie mit PDO.
Was ist besser ist PDO; Es ist eine weniger muffige Oberfläche und bietet auch die gleichen Funktionen wie MySQLi.
Die Verwendung vorbereiteter Anweisungen ist gut, da dadurch SQL-Injection-Möglichkeiten ausgeschlossen werden. Die Verwendung serverseitig vorbereiteter Anweisungen ist schlecht, da dadurch die Anzahl der Roundtrips erhöht wird.
Vorbereitete Aussagen sind für mich ein Muss. genauer gesagt, Parameterbindung (die nur bei vorbereiteten Anweisungen funktioniert). Dies ist die einzig wirklich vernünftige Möglichkeit, Zeichenfolgen in SQL-Befehle einzufügen. Ich vertraue den "Flucht" -Funktionen wirklich nicht. Die DB-Verbindung ist ein Binärprotokoll. Warum sollte ein ASCII-begrenztes Unterprotokoll für Parameter verwendet werden?