Hat PHP die MySQL-Erweiterung aufgegeben?

8

Vor kurzem hat das PHP-Handbuch auf jeder mysql-Funktionsseite folgende Warnung angezeigt:

  

Von dieser Erweiterung wird abgeraten. Stattdessen können die MySQLi oder   PDO_MySQL Erweiterung sollte verwendet werden. Siehe auch MySQL: Auswahl einer API   Anleitung und verwandte FAQ für weitere Informationen ...

MySQLi war früher sehr fehlerhaft, aber haben sie es verbessert, so dass es endlich seinen Namen verdient? Ist das der Grund, warum sie die MySQL-Erweiterung aufgeben und versuchen, Leute dazu zu bringen, MySQLi zu benutzen?

Eigentlich möchte ich MySQLi verwenden, wenn es nicht mehr fehlerhaft ist. Es hat mehr Funktionen und es ist objektorientiert.

Irgendwelche Kommentare dazu?

// EDIT: Was ich wissen möchte, ist, ob es in Ordnung ist, MySQLi zu verwenden. Oder ist es immer noch fehlerhaft? Soll ich stattdessen mit PDO gehen?

    
Ilyas Serter 14.06.2012, 22:04
quelle

4 Antworten

2

Ja, Sie können mit MySQLi gehen und was Sie schreiben ist wahr, die API erlaubt einen einfachen Wechsel von der MySQL API.

Bei neuen Projekten wird empfohlen, ext / mysql nicht länger zu verwenden, sondern ext / mysqli oder PDO_MySQL zu verwenden.

Da Sie 2009 noch nicht geschrieben haben, was für Sie fehlerhaft war, ist es schwer zu sagen, ob diese Fehler beseitigt sind. Ich nehme an, aber, naja, überprüfe das selbst.

Sie können auch ext / mysqli mit dem nativen MySQL-Treiber anstelle der MySQL-Client-Server-Bibliothek (libmysql) verwenden.

    
hakre 14.06.2012, 23:16
quelle
9

Ja. Seit (sehr) lang. Wir haben jetzt mysqli, oder besser noch, PDO.

Ich würde mich nicht in mysqli einschließen, ich würde PDO bevorzugen. Neben der einfacheren Migration von einem Datenbanksystem zum anderen bietet es auch eine bessere Fehlerbehandlung.

  

Ich möchte wissen, ob es in Ordnung ist, MySQLi zu verwenden. Oder ist es immer noch fehlerhaft?

MySQLi selbst ist ziemlich fehlerfrei und wird in der Produktion verwendet.

  

Soll ich stattdessen mit PDO gehen?

Wenn Ihr einziges Argument für die Verwendung von mysqli die Ähnlichkeit mit mysql ist, würden Sie wahrscheinlich mysqli sowieso nicht voll ausschöpfen. Wenn Sie mysqli zu seinem vollen Potential nutzen wollen, dann müssen Sie anfangen "neu zu lernen" (es ist nicht sehr viel zu lernen, weißt du). Wenn Sie ein neues Tool von "Scratch" lernen, warum nicht die bessere Alternative - PDO, in erster Linie lernen?

Auf der anderen Seite ist PDO auch nicht perfekt. Mit PDO können Sie nicht auf MySQL-spezifische APIs zugreifen (z. B. post-construct set_charset, Infile-Einstellungen, asynchrone Abfragen, OUT-Parameter von vorbereiteten Anweisungen). Sie sollten es auch so einrichten, dass es vorbereitete Anweisungen ausführt, wenn Sie sie brauchen.

    
Flavius 14.06.2012 22:05
quelle
3

Das PHP MySQLi ist eine verbesserte MySQL-Erweiterung.

  

Die mysqli-Erweiterung ermöglicht Ihnen den Zugriff auf die von MySQL 4.1 und höher bereitgestellten Funktionen.

Sie können beide unter Die Zusammenfassung der MySQLi-Erweiterungsfunktion vergleichen.

Wenn Sie nach einer zukunftssicheren, objektorientierten Lösung suchen, ist der Weg PHP PDO .

  

Die Erweiterung PHP Data Objects (PDO) definiert eine leichtgewichtige, konsistente Schnittstelle für den Zugriff auf Datenbanken in PHP. Jeder Datenbanktreiber, der die PDO-Schnittstelle implementiert, kann datenbankspezifische Features als reguläre Erweiterungsfunktionen verfügbar machen.

     

...

     

PDO stellt eine Datenzugriffs-Abstraktionsschicht zur Verfügung, was bedeutet, dass Sie unabhängig von der verwendeten Datenbank dieselben Funktionen verwenden, um Abfragen auszuführen und Daten abzurufen.

    
Zuul 14.06.2012 22:13
quelle
1

Es war Zeit. Die mysql API, obwohl einfach zu verwenden, leidet unter vielen Problemen. Das wohl schlimmste Problem ist das völlige Fehlen von Unterstützung für vorbereitete Anweisungen, die Sie zwingt, SQL-Bits durch String-Operationen zusammenzusetzen. Dies ist nicht nur langsam, sondern auch eine Hauptquelle für SQL-Injection-Schwachstellen.

Einer der Vorteile von PDO gegenüber MySQL ist, dass Sie keine neue API lernen müssen, wenn Sie sich für ein anderes DBMS in einem zukünftigen Projekt entscheiden.

    
Joni 14.06.2012 22:24
quelle

Tags und Links