2012-06-14 13 views
8

Recientemente, el manual de PHP comenzó a mostrar la siguiente advertencia en cada página función de MySQL:¿PHP ha abandonado la extensión MySQL?

uso de esta función está desaconsejado. En su lugar, se debe utilizar la extensión MySQLi o PDO_MySQL. Ver también MySQL: la elección de una guía API y FAQ relacionado para más información ...

MySQLi solían ser muy verde, pero ¿han mejorado para que sea finalmente digno de su nombre? ¿Es por eso que están abandonando la extensión de MySQL e intentando que la gente use MySQLi?

En realidad, me gustaría utilizar MySQLi si ya no tiene errores. Tiene más funciones y está orientado a objetos.

¿Alguna observación sobre esto?

// EDIT: Lo que quiero saber es si está bien usar MySQLi. ¿O todavía tiene errores? ¿Debería ir con PDO en su lugar?

+4

* "MySQLi solía ser muy defectuoso" * - ¿Qué quieres decir? – hakre

+0

He editado mi respuesta para abordar su edición también. – Flavius

Respuesta

2

Sí, puedes ir con MySQLi y lo que escribes es cierto, la API permite un cambio fácil desde la API de MySQL.

Para los nuevos proyectos se recomienda no utilizar ext/mysql por más tiempo, sino utilizar ext/mysqli o PDO_MySQL.

Como no ha escrito lo que tenía errores en 2009, es difícil decir si estos errores se han ido. Supongo que sí, pero, bueno, compruébalo tú mismo.

Es posible que desee utilizar también ext/mysqli con el conductor nativo de MySQL en lugar de la biblioteca de cliente-servidor MySQL (libmysql).

+0

gracias por su excelente respuesta. ¿Alguna razón para preferir el controlador nativo de MySQL? –

+1

Eche un vistazo aquí: http://blog.ulf-wendel.de/?p=157 - Tiene mejor administración de memoria, por ejemplo, pero esa es solo una de las razones.Puedes usarlo con mysqli o PDO. – hakre

9

Sí. Desde (muy) largo. Ahora tenemos mysqli, o mejor aún, PDO.

No me encerraría en mysqli, preferiría PDO. Además de la migración más fácil que ofrece desde un sistema de base de datos a otro, también ofrece un mejor manejo de errores.

Lo que quiero saber es si está bien usar MySQLi. ¿O todavía tiene errores?

MySQLi no tiene errores y se usa en producción.

¿Debo irme con PDO?

Si su único argumento para usar mysqli es su similitud con mysql, entonces probablemente no use mysqli en todo su potencial de todos modos. Si quieres usar mysqli en todo su potencial, entonces deberías comenzar a aprender "de nuevo" (no es demasiado aprender, ya sabes). Si comienza a aprender una nueva herramienta desde cero, ¿por qué no aprender la mejor alternativa, PDO, en primer lugar?

Por otro lado, PDO tampoco es perfecto. Con PDO, no puede acceder a las API específicas de MySQL (como post-build set_charset, configuraciones de archivo, consultas asíncronas, parámetros OUT de declaraciones preparadas). Además, debe configurarlo para que haga verdaderas declaraciones preparadas si las necesita.

+0

Probé MySQLi en 2009, y no funcionaba correctamente. Desde entonces, he estado usando la extensión MySQL predeterminada y ha estado funcionando sin problemas. ¿Prefieres PDO sobre MySQLi por algún motivo en particular? Prefiero MySQLi debido a su similitud con MySQL. –

+1

Creo que he mencionado en mi respuesta por qué "PDO sobre MySQLi". El código MySQLi tiende a hacer que el código sea más inflado de lo que necesita, según mi experiencia debido al manejo de errores incómodo. Si eso no es un problema para ti, ve con MySQLi. Pero le recomiendo que pruebe primero ambos y vea qué es más elegante. – Flavius

+0

Si su único argumento para usar mysqli es su similitud con mysql, entonces probablemente no use mysqli en todo su potencial de todos modos. Si desea usar mysqli en todo su potencial, entonces debe comenzar a aprender de nuevo. Si comienzas desde cero, ¿por qué no aprendes la mejor alternativa, PDO? – Flavius

3

El PHP MySQLi es una extensión mejorada de MySQL.

La extensión mysqli le permite acceder a la funcionalidad provista por MySQL 4.1 y superior.

Puede comparar ambos en The MySQLi Extension Function Summary.


Si usted está en busca de una solución preparada para el futuro, orientado a objetos, el camino a seguir es PHP PDO.

La extensión de objetos de datos PHP (PDO) define una interfaz ligera y consistente para acceder a las 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.

...

DOP proporciona una capa de abstracción de acceso a datos, lo que significa que, independientemente de la base de datos que está utilizando, se utilizan las mismas funciones para realizar consultas y obtener los datos.

1

Ya era hora. La API mysql, aunque fácil de usar, adolece de muchos problemas. Podría decirse que el peor problema es la falta total de soporte para declaraciones preparadas, lo que te obliga a juntar bits de SQL mediante operaciones de cadena. Esto no solo es lento sino también una fuente importante de vulnerabilidades de inyección de SQL.

Una de las ventajas de PDO sobre MySQLi es que no tendrá que aprender una nueva API cuando decida usar un DBMS diferente en un proyecto futuro.