2010-02-03 11 views

Antwort

37

sind diese verschiedenen APIs eine MySQL-Backend für den Zugriff auf

  • Die mysql der historischen API ist
  • Die mysqli ist eine neue Version des historischen API. Es sollte besser funktionieren und eine bessere Funktion haben. Außerdem ist die API objektorientiert.
  • PDO_MySQL, ist das MySQL für PDO. PDO wurde in PHP eingeführt, und das Projekt zielt darauf ab, eine gemeinsame API für alle Datenbanken zugänglich zu machen. Theoretisch sollten Sie in der Lage sein, zwischen RDMS zu migrieren, ohne Code zu ändern (wenn Sie keine spezifische RDBM-Funktion in Ihren Abfragen verwenden)), auch objektorientiert.

Es hängt also davon ab, welche Art von Code Sie produzieren möchten. Wenn Sie objektorientierte Schichten oder einfache Funktionen bevorzugen ...

Mein Rat wäre,

  1. PDO
  2. MySQLi
  3. mysql

Auch mein Gefühl, die MySQL API würde wahrscheinlich in zukünftigen Versionen von PHP gelöscht werden.

+1

Große Erklärung :) danke –

+3

Es ist nicht mehr ein Gefühl: PHP7 entfernt mysql API, PDO und mysqli –

4

mysqli ist die erweiterte Version von mysql.

PDO extension definiert eine leichte, konsistente Schnittstelle für den Zugriff auf Datenbanken in PHP. Jeder Datenbanktreiber, der die PDO-Schnittstelle implementiert, kann datenbankspezifische Funktionen als reguläre Erweiterungsfunktionen verfügbar machen.

+2

Kopieren von der manuellen Datei ist nicht sehr nützlich. – XuDing

84

Es gibt (mehr als) drei beliebte Möglichkeiten, MySQL von PHP zu verwenden.

  1. (DEPRECATED) Die mysql functions sind verfahrens- und verwenden Sie die manuelle Entkommen.
  2. MySQLi ist ein Ersatz für die mysql-Funktionen, mit objektorientierten und prozeduralen Versionen. Es hat Unterstützung für vorbereitete Aussagen.
  3. PDO (PHP Data Objects) ist eine allgemeine Datenbank Abstraktionsschicht mit Unterstützung für MySQL unter vielen anderen Datenbanken. Es bietet vorbereitete Anweisungen und eine große Flexibilität bei der Rückgabe von Daten.

Ich würde empfehlen, PDO mit vorbereiteten Anweisungen zu verwenden. Es ist eine gut gestaltete API und ermöglicht es Ihnen, einfacher in eine andere Datenbank (einschließlich aller, die ODBC unterstützt) zu verschieben.

+7

Es gibt oft die Verwirrung, dass Sie für prozedurale Funktionen mysql _ *() verwenden müssen, wobei Sie für OO mysqli verwenden! Fakt ist, dass mysqli die frühe (PHP 4) Implementierung von mysql vollständig ersetzt. Es ist möglich, sowohl den prozeduralen Stil als auch den OO one mit mysqli zu verwenden. –

+0

@Patrick, danke. Ich habe das korrigiert. –

7

Es gibt einen table Vergleich der 3 API-Funktionen. Verwenden Sie Mysqli, wann immer es möglich ist, ebenso wie das neueste, das nach PDO eingeführt wurde und in Zukunft besser gepflegt wird.

+4

Das ist einfach falsch. 'mysqli' und' PDO' wurden für PHP 5.0 veröffentlicht (http://www.php.net/manual/en/mysqli.overview.php). Und Sie haben keine Grundlage dafür angegeben, dass die PDO nicht beibehalten wird. –

+2

Ich habe das nicht vorgeschlagen. PDO und MySQL haben unterschiedliche Funktionen und wahrscheinlich werden beide beibehalten. PDO MAIN FEATURE ist die konsistente API über verschiedene Treiber, wobei mysql nur einer von ihnen ist. –

3

Insbesondere stellt die MySQLi Erweiterung folgende äußerst nützliche Vorteile gegenüber der alten Erweiterung MySQL ..

OOP-Schnittstelle (zusätzlich zu dem Verfahren) Prepared Statement Unterstützung Transaktion + Stored Procedure Unterstützung Nicer Syntax Verbesserungen in der Geschwindigkeit Verbesserte Debugging

PDO-Erweiterung

PHP Data Objects Erweiterung ist eine Datenbank-Abstraktionsschicht. Insbesondere ist dies keine MySQL-Schnittstelle, da sie Treiber für viele Datenbank-Engines bereitstellt (natürlich einschließlich MYSQL).

PDO zielt darauf ab, eine konsistente API bereitzustellen, das heißt, wenn ein Datenbankmodul geändert wird, sollte der Code so geändert werden, dass er minimal ist. Wenn Sie PDO verwenden, funktioniert Ihr Code normalerweise einfach über viele Datenbank-Engines hinweg, indem Sie einfach den verwendeten Treiber ändern.

Neben der datenbankübergreifenden Kompatibilität unterstützt PDO auch vorbereitete Anweisungen, gespeicherte Prozeduren und mehr, während der MySQL-Treiber verwendet wird.

1

Einfach gesagt können wir sagen, dass die MySQL Improved Extension verschiedene Vorteile bietet. Die Erweiterung mysqli erlaubt Ihnen den Zugriff auf die Funktionen von MySQL 4.1 und höher.

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 Funktionen als reguläre Erweiterungsfunktionen verfügbar machen. Beachten Sie, dass Sie mit der PDO-Erweiterung keine Datenbankfunktionen ausführen können. Sie müssen einen datenbankspezifischen PDO-Treiber verwenden, um auf einen Datenbankserver zuzugreifen.

Verwandte Themen