mysqli oder PDO – was sind die Vor- und Nachteile? [closed]

Lesezeit: 7 Minuten

mysqli oder PDO was sind die Vor und Nachteile
Polsonby

An unserer Stelle sind wir zwischen der Verwendung von mysqli und PDO für Dinge wie vorbereitete Anweisungen und Transaktionsunterstützung aufgeteilt. Einige Projekte verwenden das eine, andere das andere. Es besteht nur eine geringe 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 zulässt, und soweit ich weiß, tut mysqli dies nicht.

Gibt es andere Vor- und Nachteile, wenn wir uns als Standard für eines entscheiden, wenn wir unsere Projekte konsolidieren, um nur einen Ansatz zu verwenden?

  • Dies Artikel hilft bei der Auswahl, welche Sie verwenden möchten. Wenn Sie die Leistung berücksichtigen Das könnte dir bei der Auswahl helfen.

    – ravi404

    28. November 2012 um 11:48 Uhr

mysqli oder PDO was sind die Vor und Nachteile
e-satis

Nun, man könnte über den objektorientierten Aspekt, die vorbereiteten Aussagen, die Tatsache, dass es ein Standard wird, etc. streiten. Aber ich weiß, dass es meistens besser funktioniert, jemanden zu überzeugen, wenn man ein Killer-Feature verwendet. Da ist es also:

Eine wirklich nette Sache mit PDO ist, dass Sie die Daten abrufen und automatisch in ein Objekt einfügen können. Wenn Sie keine verwenden möchten ORM (weil es nur ein schnelles Skript ist), aber Sie mögen Objektzuordnung, es ist WIRKLICH cool:

class Student {

    public $id;
    public $first_name;
    public $last_name

    public function getFullName() {
        return $this->first_name.' '.$this->last_name
    }
}

try 
{
    $dbh = new PDO("mysql:host=$hostname;dbname=school", $username, $password)

    $stmt = $dbh->query("SELECT * FROM students");

    /* MAGIC HAPPENS HERE */

    $stmt->setFetchMode(PDO::FETCH_INTO, new Student);


    foreach($stmt as $student)
    {
        echo $student->getFullName().'<br />';
    } 

    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

  • Gibt es einen Unterschied zwischen den oben genannten und $mysqliResult->fetch_object("student"); ?

    – Andy Fleming

    15. April 2011 um 7:18 Uhr

  • @e-satis nein, ich benutze PHP. Öffentliche Felder verstoßen gegen die Kapselung, also AS A BEST PRACTICE es ist nur … lol 🙂 Google verwendet keine öffentlichen Felder, nur Zugriffsmethoden: google-styleguide.googlecode.com/svn/trunk/… .

    – OZ_

    24. Mai 2011 um 21:08 Uhr

  • @e-satis: Entschuldigung für das Einspringen, aber Getter und Setter sind notwendig, wenn Sie steuern möchten, was passiert, wenn die Variablen geändert werden. Andernfalls können Sie den internen Zustand Ihres Objekts einfach nicht garantieren (dies ist insbesondere dann ein Problem, wenn Sie ein anderes Objekt darin haben). Dies ist völlig sprachunabhängig. @OZ_: Beruhige dich. Persönliche Kritik wird andere nur in die Defensive treiben.

    – Jakob P.

    4. Juni 2011 um 17:08 Uhr


  • @monadic: Einverstanden. Kapselung ist natürlich ein stichhaltiges Argument, wenn es um Kernkomponenten oder komplexe Objekte usw. geht, jedoch als Repräsentationen von Datensätzen, die sonst Lese-Schreib-Zuordnungen wären. Arrays ist dies akzeptabel. Darüber hinaus ermöglicht es eine einfachere Überprüfung des Typs, da Datensätze durch das System fließen.

    – Dan Lugg

    16. Juli 2011 um 0:50 Uhr


  • @outis Ich hoffe, ich bin hier nicht in der Minderheit, aber ich bin nicht der Meinung, dass Antworten nach ihrer Sicherheit gegenüber neuen Entwicklern beurteilt werden sollten. Klingt hart, ist aber wahr. Der Zweck einer Antwort auf SO besteht nicht nur darin, Code zum Kopieren und Einfügen bereitzustellen, sondern auch für Verständnis zu sorgen. Es ist nicht die Aufgabe des Antwortenden sicherzustellen, dass jede Sicherheitslücke oder jeder Musterfehler in einem Beispiel behandelt wird, denn seien wir ehrlich, die Anwendung, in die der Code kopiert wird, unterscheidet sich von Natur aus von jeder anderen Anwendung, die denselben Code verwendet.

    – Mattygabe

    1. September 2011 um 14:11 Uhr

Das Verschieben einer Anwendung von einer Datenbank in eine andere ist nicht sehr üblich, aber früher oder später arbeiten Sie möglicherweise an einem anderen Projekt mit einem anderen RDBMS. Wenn Sie mit PDO zu Hause sind, gibt es an diesem Punkt zumindest eine Sache weniger zu lernen.

Abgesehen davon finde ich die PDO-API etwas intuitiver und fühlt sich wirklich objektorientierter an. mysqli fühlt sich an, als wäre es nur eine prozedurale API, die objektiviert wurde, wenn Sie verstehen, was ich meine. Kurz gesagt, ich finde es einfacher, mit PDO zu arbeiten, aber das ist natürlich subjektiv.

Ich habe angefangen, PDO zu verwenden, weil die Anweisungsunterstützung meiner Meinung nach besser ist. Ich verwende eine ActiveRecord-ähnliche Datenzugriffsschicht, und es ist viel einfacher, dynamisch generierte Anweisungen zu implementieren. Die Parameterbindung von MySQLi muss in einem einzigen Funktions-/Methodenaufruf erfolgen. Wenn Sie also bis zur Laufzeit nicht wissen, wie viele Parameter Sie binden möchten, müssen Sie sie verwenden call_user_func_array() (Ich glaube, das ist der richtige Funktionsname) für selects. Und vergessen Sie die einfache dynamische Ergebnisbindung.

Am meisten mag ich PDO, weil es eine sehr vernünftige Abstraktionsebene ist. Es ist einfach, es in vollständig abstrahierten Systemen zu verwenden, in denen Sie kein SQL schreiben möchten, aber es macht es auch einfach, ein optimierteres, reines Abfragesystem zu verwenden oder die beiden zu kombinieren.

  • Die Ergebnisbindung mit dynamisch generierten Abfragen ist möglich, wir tun dies bei unseren Anwendungen. Es ist jedoch ein großer Schmerz.

    – Pim Jäger

    21. April 2009 um 7:50 Uhr

PDO ist der Standard, dessen Verwendung die meisten Entwickler erwarten. mysqli war im Wesentlichen eine maßgeschneiderte Lösung für ein bestimmtes Problem, aber es hat alle Probleme der anderen DBMS-spezifischen Bibliotheken. Bei PDO werden all die harte Arbeit und das kluge Denken hinfließen.

Hier ist noch etwas zu beachten: Im Moment (PHP 5.2) ist die PDO-Bibliothek Buggy. Es ist voller seltsamer Bugs. Zum Beispiel: vor dem Speichern von a PDOStatement in einer Variablen sollte die Variable sein unset() um eine Menge Bugs zu vermeiden. Die meisten davon wurden in PHP 5.3 behoben und werden Anfang 2009 in PHP 5.3 veröffentlicht, das wahrscheinlich viele andere Fehler enthalten wird. Sie sollten sich auf die Verwendung von PDO für PHP 6.1 konzentrieren, wenn Sie eine stabile Version wünschen, und auf die Verwendung von PDO für PHP 5.3, wenn Sie der Community helfen möchten.

  • Ich denke, dass es sich lohnt, die Vorteile, die PDO bietet, zu verstehen und die Fehler zu umgehen. PHP selbst ist voller sehr ärgerlicher Fehler, von denen wir einige nicht einmal effizient umgehen können, und dennoch bietet es viele Vorteile, die uns dazu veranlassen, es anstelle anderer Optionen zu verwenden.

    – Brian Warshaw

    10. November 2009 um 16:55 Uhr

  • Ähm, seltsam, ich habe nie einen Fehler mit PDO erlebt. Und ich benutze es viel.

    – Nikic

    23. Januar 2011 um 10:49 Uhr

  • Mysqli hat auch Fehler. Jede Software hat Fehler.

    – Bill Karwin

    6. Mai 2013 um 19:02 Uhr

1647076449 798 mysqli oder PDO was sind die Vor und Nachteile
Alix Axel

Ein weiterer bemerkenswerter (guter) Unterschied zu PDO ist, dass es so ist PDO::quote() -Methode fügt automatisch die einschließenden Anführungszeichen hinzu, während mysqli::real_escape_string() (und ähnliche) nicht:

PDO::quote() setzt Anführungszeichen um die Eingabezeichenfolge (falls erforderlich) und maskiert Sonderzeichen innerhalb der Eingabezeichenfolge, wobei ein für den zugrunde liegenden Treiber geeigneter Anführungsstil verwendet wird.

  • Ich denke, dass es sich lohnt, die Vorteile, die PDO bietet, zu verstehen und die Fehler zu umgehen. PHP selbst ist voller sehr ärgerlicher Fehler, von denen wir einige nicht einmal effizient umgehen können, und dennoch bietet es viele Vorteile, die uns dazu veranlassen, es anstelle anderer Optionen zu verwenden.

    – Brian Warshaw

    10. November 2009 um 16:55 Uhr

  • Ähm, seltsam, ich habe nie einen Fehler mit PDO erlebt. Und ich benutze es viel.

    – Nikic

    23. Januar 2011 um 10:49 Uhr

  • Mysqli hat auch Fehler. Jede Software hat Fehler.

    – Bill Karwin

    6. Mai 2013 um 19:02 Uhr

mysqli oder PDO was sind die Vor und Nachteile
Dfranc3373

PDO wird die Skalierung viel einfacher machen, wenn Ihre Website/Webanwendung wirklich funktioniert, da Sie täglich Master- und Slave-Verbindungen einrichten können, um die Last über die Datenbank zu verteilen, und PHP ist auf dem Weg zu PDO als Standard.

PDO-Info

Skalierung einer Webanwendung

993240cookie-checkmysqli oder PDO – was sind die Vor- und Nachteile? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy