Jaka jest różnica między MySQL, MySQLi i PDO? [Zamknięte]

128

Jaka jest różnica między MySQL, MySQLi i PDO ?

Który z nich najlepiej pasuje do PHP-MySQL?

Chintan Parekh
źródło

Odpowiedzi:

100

Istnieją (ponad) trzy popularne sposoby używania MySQL z PHP. To przedstawia kilka cech / różnic PHP: Wybór API :

  1. ( WYCOFANE ) Funkcje mysql są proceduralne i używają ręcznej zmiany znaczenia.
  2. MySQLi jest zamiennikiem funkcji mysql w wersji obiektowej i proceduralnej. Posiada wsparcie dla przygotowanych oświadczeń.
  3. PDO (PHP Data Objects) to ogólna warstwa abstrakcji bazy danych z obsługą MySQL wśród wielu innych baz danych. Zapewnia przygotowane oświadczenia i dużą elastyczność w sposobie zwracania danych.

Polecam używanie PDO z przygotowanymi zestawieniami. Jest to dobrze zaprojektowany interfejs API, który w razie potrzeby pozwoli ci łatwiej przenieść się do innej bazy danych (w tym takiej, która obsługuje ODBC ).

Matthew Flaschen
źródło
9
Często pojawia się zamieszanie, że w przypadku procedur proceduralnych musisz używać funkcji mysql _ * (), podczas gdy dla OO używasz mysqli! Faktem jest, że mysqli całkowicie zastępuje wczesną (PHP 4) implementację mysql. W mysqli można używać zarówno stylu proceduralnego, jak i OO.
Patrick Allaert
@Patrick, dzięki. Poprawiłem to.
Matthew Flaschen
46

Są to różne interfejsy API umożliwiające dostęp do zaplecza MySQL

  • Mysql jest historycznym API
  • Mysqli jest nowa wersja historycznego API. Powinien działać lepiej i mieć lepszy zestaw funkcji. Ponadto API jest zorientowane obiektowo.
  • PDO_MySQL , to MySQL dla PDO. PDO zostało wprowadzone w PHP, a projekt ma na celu stworzenie wspólnego API dla dostępu do wszystkich baz danych, więc teoretycznie powinieneś być w stanie migrować między RDMS bez zmiany kodu (jeśli nie używasz określonej funkcji RDBM w zapytaniach ), również zorientowane obiektowo.

Zależy to więc od rodzaju kodu, który chcesz wyprodukować. Jeśli wolisz warstwy obiektowe lub zwykłe funkcje ...

Moja rada byłaby taka

  1. ChNP
  2. MySQLi
  3. mysql

Wydaje mi się również, że API mysql prawdopodobnie zostanie usunięte w przyszłych wydaniach PHP.

RageZ
źródło
3
Koniec z uczuciem: PHP7 usunęło mysql API, pozostawiając PDO i mysqli
Manuel
3

mysqli to ulepszona wersja mysql.

Rozszerzenie PDO definiuje lekki, spójny interfejs dostępu do baz danych w PHP. Każdy sterownik bazy danych, który implementuje interfejs PDO, może udostępniać funkcje specyficzne dla bazy danych jako zwykłe funkcje rozszerzeń.

Sarfraz
źródło
4
kopiowanie z pliku podręcznika nie jest zbyt przydatne.
XuDing
3

W szczególności rozszerzenie MySQLi zapewnia następujące niezwykle przydatne korzyści w porównaniu ze starym rozszerzeniem MySQL.

Interfejs OOP (oprócz proceduralnych) Obsługa gotowych instrukcji Obsługa transakcji i procedur składowanych Ładniejsza składnia Ulepszenia szybkości składni Ulepszone debugowanie

Rozszerzenie PDO

Rozszerzenie PHP Data Objects jest warstwą abstrakcji bazy danych. W szczególności nie jest to interfejs MySQL, ponieważ zapewnia sterowniki dla wielu silników baz danych (oczywiście w tym MYSQL).

Celem PDO jest zapewnienie spójnego interfejsu API, co oznacza, że ​​w przypadku zmiany silnika bazy danych zmiany w kodzie, które to odzwierciedlają, powinny być minimalne. Kiedy używasz PDO, twój kod normalnie „działa” w wielu silnikach baz danych, po prostu zmieniając używany sterownik.

Oprócz zgodności z różnymi bazami danych, PDO obsługuje również przygotowane instrukcje, procedury składowane i nie tylko, korzystając ze sterownika MySQL.


źródło