Was ist besser, MySQL oder MySQLi? Und warum? Welche soll ich verwenden?
Ich meine besser nicht nur in Bezug auf die Leistung, sondern auch in Bezug auf alle anderen relevanten Funktionen.
Anand
Was ist besser, MySQL oder MySQLi? Und warum? Welche soll ich verwenden?
Ich meine besser nicht nur in Bezug auf die Leistung, sondern auch in Bezug auf alle anderen relevanten Funktionen.
Markus Davidson
Wenn Sie einen Blick darauf werfen Überblick über verbesserte MySQL-Erweiterungensollte es Ihnen alles sagen, was Sie über die Unterschiede zwischen den beiden wissen müssen.
Die wichtigsten nützlichen Funktionen sind:
Ja, das Beste ist, dass mysqli vorbereitete Anweisungen unterstützt
– Jondinham
22. Oktober 2011 um 9:57 Uhr
Zu beachten ist auch, dass MySQLi nur mit MySQL 5+ funktioniert. Das ist nicht mehr wirklich relevant, aber als MySQLi herauskam, war MySQL 4 noch der Standard. Dies ist einer der Gründe, warum die Erweiterungen separat sind, der alte MySQL-Treiber bleibt aus Kompatibilitätsgründen dort.
– zneak
4. Januar 2013 um 5:37 Uhr
Es ist erwähnenswert, dass sich die Dinge in sechs Jahren stark verändert haben. mysql_*()
ist jetzt veraltet und wird entfernt bald. Sie sollten es nicht für neuen Code verwenden.
– Benutzer1864610
21. Mai 2015 um 1:47 Uhr
Was sollten wir mit weniger CPU und RAM wählen?
– Mahdi Jazini
5. Oktober 2015 um 6:36 Uhr
Siehe Gordons Antwort unten. Die alte mysql-Erweiterung wird nicht mehr unterstützt, daher ist es besser, die mysqli-Erweiterung trotzdem zu verwenden.
– Mark Davidson
5. Oktober 2015 um 9:37 Uhr
Gordon
Es gibt eine Handbuchseite, die der Hilfe bei der Auswahl zwischen mysql, mysqli und PDO unter gewidmet ist
Das PHP-Team empfiehlt mysqli oder PDO_MySQL für neue Entwicklungen:
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 Feature-Vergleichsmatrix finden Sie unten. Die Gesamtleistung aller drei Erweiterungen wird als ungefähr gleich angesehen. Zwar trägt die Performance der Erweiterung nur zu einem Bruchteil zur Gesamtlaufzeit einer PHP-Webanfrage bei. 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 der mysql-API sind wie folgt:
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 Funktionsmatrix zum Vergleich der Bibliotheken (neues mysqlnd versus libmysql) unter
und ein sehr ausführlicher Blogartikel unter
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 funktionierten. Ebenfalls mysqli stürzt bei LONGTEXT-Spalten ab. Dieser Fehler wurde mindestens seit 2005 in verschiedenen Formen gemeldet und bleibt kaputt. 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, wählen Sie PDO.
PDO ist auch nicht gerade perfekt (ich bin damit auf einige böse Arbeitsspeicherabzüge gestoßen), aber zumindest hat es eine breitere Benutzerbasis, also ist es wahrscheinlich eine sicherere Wette.
– troelskn
14. Februar 2009 um 12:52 Uhr
@troelskn, ist normales MySQL nicht einfach besser?
– Schrittmacher
16. Juli 2013 um 15:58 Uhr
@ Pacerier Wenn man bedenkt, dass es veraltet ist, würde ich nein sagen. Im Allgemeinen scheint es, dass PDO zur Standardwahl geworden sind.
– troelskn
17. Juli 2013 um 11:54 Uhr
@troelskn, aber veraltet bedeutet nichts, außer dass es in zukünftigen Versionen nicht mehr vorhanden sein würde. In Bezug auf die Stabilität ist normales MySQL nicht stabiler?
– Schrittmacher
18. Juli 2013 um 13:08 Uhr
An diesem Punkt (5.5) gibt PHP aktiv Warnungen aus, wenn Sie es verwenden: php.net/manual/en/migration55.deprecated.php
– troelskn
18. Juli 2013 um 19:34 Uhr
MySQLi steht für MySQL Improved. Es ist eine objektorientierte Schnittstelle zu den MySQL-Bindungen, die die Verwendung vereinfacht. Es bietet auch Unterstützung für vorbereitete Anweisungen (die sehr sinnvoll). Wenn Sie PHP 5 verwenden, verwenden Sie MySQLi.
Was besser ist, ist PDO; Es ist eine weniger mühselige Schnittstelle und bietet auch die gleichen Funktionen wie MySQLi.
Die Verwendung vorbereiteter Anweisungen ist gut, da sie die Möglichkeiten der SQL-Einschleusung eliminiert; Die Verwendung von serverseitig vorbereiteten Anweisungen ist schlecht, da sie die Anzahl der Roundtrips erhöht.
Javier
Für mich sind vorbereitete Kontoauszüge ein Must-Have-Feature. genauer gesagt Parameterbindung (die nur bei vorbereiteten Anweisungen funktioniert). Es ist die einzige wirklich vernünftige Möglichkeit, Zeichenfolgen in SQL-Befehle einzufügen. Ich traue den ‘Escape’-Funktionen wirklich nicht. Die DB-Verbindung ist ein binäres Protokoll, warum ein ASCII-begrenztes Unterprotokoll für Parameter verwenden?