2010-02-03 24 views

Respuesta

37

Esos son diferentes APIs para acceder a un motor MySQL

  • El mysql es la API histórica
  • El mysqli es una nueva versión de la API histórico. Debería funcionar mejor y tener un mejor conjunto de funciones. Además, la API está orientada a objetos.
  • PDO_MySQL, es el MySQL para PDO. PDO se ha introducido en PHP, y el proyecto tiene como objetivo crear una API común para el acceso a todas las bases de datos, por lo que en teoría debería poder migrar entre RDMS sin cambiar ningún código (si no utiliza funciones RDBM específicas en sus consultas)), también orientado a objetos.

Por lo tanto, depende del tipo de código que desee producir. Si prefiere capas orientadas a objetos o funciones llanos ...

Mi consejo sería

  1. DOP
  2. MySQLi
  3. MySQL

También mi sentimiento, la API MySQL haría probablemente se haya eliminado en futuras versiones de PHP.

+1

Gran explicación :) gracias –

+3

Ya no es una sensación: PHP7 eliminó la API mysql, dejando PDO y mysqli –

4

mysqli es la versión mejorada de mysql.

PDO extension define una interfaz liviana y consistente para acceder a bases de datos en PHP. Cada controlador de base de datos que implementa la interfaz PDO puede exponer características específicas de la base de datos como funciones de extensión regulares.

+2

copiando del archivo manual no es muy útil. – XuDing

84

Existen (más de) tres formas populares de utilizar MySQL desde PHP.

  1. (DEPRECATED) El mysql functions son de procedimiento y el uso escape manual.
  2. MySQLi es un reemplazo de las funciones de mysql, con versiones orientadas a objetos y de procedimiento. Tiene soporte para declaraciones preparadas.
  3. PDO (PHP Data Objects) es una capa de abstracción de base de datos general con soporte para MySQL entre muchas otras bases de datos. Proporciona declaraciones preparadas y una flexibilidad significativa en la forma en que se devuelven los datos.

Recomendaría usar PDO con declaraciones preparadas. Es una API bien diseñada y le permitirá moverse más fácilmente a otra base de datos (incluidas las que admitan ODBC) si es necesario.

+7

¡A menudo existe la confusión de que para el procedimiento debe usar las funciones mysql _ *() donde para OO usa mysqli! El hecho es que mysqli reemplaza por completo la implementación temprana (PHP 4) de mysql. Es posible usar tanto el estilo de procedimiento como el de OO con mysqli. –

+0

@Patrick, gracias. Lo he corregido –

7

Hay un table que compara las 3 características de la API. Use Mysqli siempre que sea posible, ya que es el último lanzamiento después de PDO y se mantendrá y se mantendrá mejor en el futuro.

+4

Esto es simplemente incorrecto. 'mysqli' y' PDO' fueron [ambos lanzados] (http://www.php.net/manual/en/mysqli.overview.php) para PHP 5.0. Y no ha dado ninguna base para sugerir que PDO no se mantendrá. –

+2

No sugerí eso. PDO y mysqli tienen diferentes funciones y probablemente ambos se mantendrán. La característica principal de PDO es la API consistente sobre diferentes controladores, siendo mysql solo uno de ellos. –

3

En concreto, la extensión mysqli ofrece los siguientes beneficios de gran utilidad respecto a la antigua extensión de MySQL ..

programación orientada a objetos de interfaz (además de los de procedimiento) Declaración preparada de apoyo de transacción almacenados + Apoyo Procedimiento Más agradable Sintaxis Mejoras velocidad mejorada Depuración

DOP extensión

PHP Data Objects extensión es una base de datos de capa de abstracción. Específicamente, esta no es una interfaz MySQL, ya que proporciona controladores para muchos motores de base de datos (por supuesto, incluye MYSQL).

PDO tiene como objetivo proporcionar una API coherente que significa que cuando se cambia un motor de base de datos, el código cambia para reflejar que esto debería ser mínimo. Al usar PDO, su código normalmente "solo funcionará" en muchos motores de base de datos, simplemente cambiando el controlador que está usando.

Además de ser compatible con bases de datos cruzadas, PDO también admite declaraciones preparadas, procedimientos almacenados y más, al utilizar el controlador MySQL.

1

Simplemente podemos decir Extensión mejorada de MySQL, que ofrece varios beneficios. La extensión mysqli le permite acceder a la funcionalidad proporcionada por MySQL 4.1 y superior.

La extensión de objetos de datos PHP (PDO) define una interfaz liviana y consistente para acceder a bases de datos en PHP. Cada controlador de base de datos que implementa la interfaz PDO puede exponer características específicas de la base de datos como funciones de extensión regulares. Tenga en cuenta que no puede realizar ninguna función de base de datos usando la extensión PDO por sí sola; debe usar un controlador PDO específico de la base de datos para acceder a un servidor de base de datos.

Cuestiones relacionadas