342 Stimmen

mysqli oder PDO - was sind die Vor- und Nachteile?

Bei uns sind wir zwischen der Verwendung von mysqli und PDO für Dinge wie vorbereitete Anweisungen und Transaktionsunterstützung aufgeteilt. Einige Projekte verwenden das eine, einige das andere. Es besteht kaum eine realistische Wahrscheinlichkeit, dass wir jemals zu einem anderen RDBMS wechseln.

Ich bevorzuge PDO aus dem einzigen Grund, dass es benannte Parameter für vorbereitete Anweisungen erlaubt, und soweit ich weiß, tut mysqli das nicht.

Gibt es noch andere Vor- und Nachteile, die dafür sprechen, den einen oder den anderen als Standard zu wählen, wenn wir unsere Projekte konsolidieren, um nur einen Ansatz zu verwenden?

4voto

Dobb Punkte 83

In meinem Benchmark-Skript Jede Methode wird 10000 Mal getestet und die Differenz der Gesamtzeit für jede Methode wird ausgedruckt. Sie sollten dies auf Ihre eigene Konfiguration, ich bin sicher, die Ergebnisse werden variieren!

Dies sind meine Ergebnisse:

  • " SELECT NULL" -> PGO() schneller um ~ 0,35 Sekunden
  • " SHOW TABLE STATUS" -> mysqli() schneller um ~ 2,3 Sekunden
  • " SELECT * FROM users" -> mysqli() schneller um ~ 33 Sekunden

Hinweis: Durch die Verwendung von ->fetch_row() für mysqli werden die Spaltennamen nicht zum Array hinzugefügt, ich habe keine Möglichkeit gefunden, dies in PGO zu tun. Aber auch wenn ich ->fetch_array() verwende, ist mysqli etwas langsamer, aber immer noch schneller als PGO (außer bei SELECT NULL).

3voto

Unlabeled Meat Punkte 254

Eine Sache, die PDO hat, die MySQLi nicht hat und die ich sehr mag, ist PDOs Fähigkeit, ein Ergebnis als Objekt eines bestimmten Klassentyps zurückzugeben (z.B. $pdo->fetchObject('MyClass') ). MySQLi's fetch_object() gibt nur eine stdClass Objekt.

-4voto

mike Punkte 4561

Eines sollten Sie dabei nicht vergessen.

Mysqli unterstützt die Funktion fetch_assoc() nicht, die die Spalten mit Schlüsseln, die Spaltennamen darstellen, zurückgeben würde. Natürlich ist es möglich, eine eigene Funktion zu schreiben, um das zu tun, sie ist nicht einmal sehr lang, aber ich hatte wirklich schwer, es zu schreiben (für Nichtgläubige: wenn es Ihnen leicht erscheint, versuchen Sie es einmal selbst und schummeln Sie nicht :) )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X