Qual è la differenza tra MySQL, MySQLi e PDO? [chiuso]


Risposte:


100

Esistono (più di) tre modi popolari per utilizzare MySQL da PHP. Questo delinea alcune caratteristiche / differenze PHP: La scelta di un'API :

  1. ( DEPRECATED ) Le funzioni mysql sono procedurali e usano l'escaping manuale.
  2. MySQLi è un sostituto delle funzioni mysql, con versioni orientate agli oggetti e procedurali. Ha il supporto per dichiarazioni preparate.
  3. PDO (PHP Data Objects) è un livello generale di astrazione del database con supporto per MySQL tra molti altri database. Fornisce dichiarazioni preparate e una notevole flessibilità nel modo in cui i dati vengono restituiti.

Consiglierei l'uso del DOP con dichiarazioni preparate. È un'API ben progettata e ti permetterà di spostarti più facilmente su un altro database (incluso quello che supporta ODBC ) se necessario.


9
C'è spesso la confusione che per le procedure devi usare le funzioni mysql _ * () dove per OO usi mysqli! Il fatto è che mysqli sostituisce completamente l'implementazione iniziale (PHP 4) di mysql. È possibile utilizzare sia lo stile procedurale sia quello OO con mysqli.
Patrick Allaert,

@Patrick, grazie. Ho corretto questo.
Matthew Flaschen,

46

Queste sono diverse API per accedere a un back-end MySQL

  • Il mysql è l'API storica
  • Il mysqli è una nuova versione delle API storica. Dovrebbe funzionare meglio e avere una migliore serie di funzioni. Inoltre, l'API è orientata agli oggetti.
  • PDO_MySQL , è il MySQL per PDO. PDO è stato introdotto in PHP e il progetto mira a creare un'API comune per l'accesso a tutti i database, quindi in teoria dovresti essere in grado di migrare tra RDMS senza modificare alcun codice (se non usi la funzione RDBM specifica nelle tue query ), anche orientato agli oggetti.

Quindi dipende dal tipo di codice che vuoi produrre. Se preferisci i livelli orientati agli oggetti o le funzioni semplici ...

Il mio consiglio sarebbe

  1. DOP
  2. MySQLi
  3. mysql

Anche il mio sentimento, l'API mysql verrebbe probabilmente eliminata nelle versioni future di PHP.


3
Non è più un sentimento: PHP7 ha rimosso l'API mysql, lasciando DOP e mysqli
Manuel,

3

mysqli è la versione avanzata di mysql.

L'estensione PDO definisce un'interfaccia leggera e coerente per l'accesso ai database in PHP. Ogni driver di database che implementa l'interfaccia PDO può esporre funzionalità specifiche del database come normali funzioni di estensione.


4
la copia dal file manuale non è molto utile.
XuDing,

3

In particolare, l'estensione MySQLi offre i seguenti vantaggi estremamente utili rispetto alla vecchia estensione MySQL.

Interfaccia OOP (oltre alla procedura) Dichiarazione preparata Supporto transazione + Supporto procedura memorizzata Sintassi migliore Miglioramenti della velocità Debugging migliorato

Estensione DOP

L'estensione PHP Data Objects è un livello di astrazione del database. In particolare, questa non è un'interfaccia MySQL, in quanto fornisce driver per molti motori di database (ovviamente incluso MYSQL).

L'obiettivo di PDO è fornire un'API coerente, il che significa che quando un motore di database viene modificato, le modifiche al codice per riflettere ciò dovrebbero essere minime. Quando si utilizza PDO, il codice normalmente "funziona" su molti motori di database, semplicemente modificando il driver che si sta utilizzando.

Oltre ad essere compatibile con più database, PDO supporta anche istruzioni preparate, procedure memorizzate e altro, durante l'utilizzo del driver MySQL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.