¿Qué es mejor, MySQL o MySQLi? ¿Y por qué? ¿Qué debería usar?MySQL vs MySQLi al usar PHP
quiero decir mejor no sólo en términos de rendimiento, pero cualquier otra característica relevante.
¿Qué es mejor, MySQL o MySQLi? ¿Y por qué? ¿Qué debería usar?MySQL vs MySQLi al usar PHP
quiero decir mejor no sólo en términos de rendimiento, pero cualquier otra característica relevante.
Si usted tiene un vistazo a MySQL Improved Extension Overview, debe decirle todo lo que necesita saber acerca de las diferencias entre los dos.
Las principales características útiles son:
Lo que es mejor es DOP; es una interfaz menos costosa y también ofrece las mismas funciones que MySQLi.
El uso de comandos preparados es buena, ya que elimina las posibilidades de inyección de SQL; usar declaraciones preparadas del lado del servidor es malo porque aumenta el número de viajes de ida y vuelta.
MySQLi significa MySQL mejorado. Es una interfaz orientada a objetos para los enlaces MySQL que hace que todo sea más fácil de usar. También ofrece soporte para declaraciones preparadas (que son muy útiles). Si estás en PHP 5 usa MySQLi.
para mí, declaraciones preparadas es una característica imprescindible. más exactamente, enlace de parámetros (que solo funciona en declaraciones preparadas). es la única forma realmente sensata de insertar cadenas en comandos SQL. Realmente no confío en las funciones de "escape". la conexión DB es un protocolo binario, ¿por qué usar un sub protocolo de parámetros ASCII?
PDO usualmente usa declaraciones preparadas del lado del cliente, por lo que no están realmente preparadas en el servidor, pero esto es bueno, ya que ahorra recursos del servidor y por lo general tiene un mejor rendimiento. La declaración preparada "emulación" siempre escapará las cosas correctamente. – MarkR
"siempre" y "escapar" son palabras peligrosas cuando van juntas. no sé, tal vez este código esté totalmente libre de errores; pero ¿por qué molestarse, cuando un protocolo binario real está disponible? en cuanto a rendimiento, eso está abierto a la evaluación comparativa. – Javier
He abandonado utilizando mysqli. Simplemente es demasiado inestable. He tenido consultas que bloquean PHP usando mysqli pero funcionan bien con el paquete mysql. También mysqli crashes on LONGTEXT columns. Este error se ha planteado en diversas formas desde al menos 2005 y sigue roto. Sinceramente, me gustaría utilizar declaraciones preparadas, pero mysqli no es lo suficientemente confiable (y nadie parece molestarse en solucionarlo). Si realmente quiere declaraciones preparadas, vaya con PDO.
PDO tampoco es exactamente perfecto (me he topado con algunos núcleos desagradables), pero al menos tiene una base de usuarios más amplia, por lo que es probablemente una apuesta más segura. – troelskn
@troelskn, ¿entonces no es normal que mysql sea mejor? – Pacerier
@Pacerier Considerando que está obsoleto, diría que no. En general, parece que la DOP se ha convertido en la opción estándar. – troelskn
Hay una página del manual dedicada a ayudar a elegir entre mysql, mysqli y PDO en
El equipo PHP recomienda mysqli o PDO_MySQL para un nuevo desarrollo:
se recomienda usar cualquiera de los mys Extensiones qli o PDO_MySQL. No se recomienda usar la antigua extensión mysql para un nuevo desarrollo. A continuación, se proporciona una matriz de comparación de características detallada. El rendimiento general de las tres extensiones se considera aproximadamente el mismo. Aunque el rendimiento de la extensión contribuye solo una fracción del tiempo total de ejecución de una solicitud web PHP.A menudo, el impacto es tan bajo como 0.1%.
La página también tiene una matriz de funciones que compara las API de extensión. Las principales diferencias entre mysqli y API MySQL son los siguientes:
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
Hay una matriz característica adicional comparando las bibliotecas (nuevo mysqlnd frente libmysql) en
y una muy completa b ingrese al artículo
sí, lo mejor es que mysqli soporta declaraciones preparadas – jondinham
También hay que señalar que MySQLi sólo funciona con MySQL 5+. Esto ya no es relevante, pero cuando salió MySQLi, MySQL 4 todavía era el estándar. Esta es parte de la razón por la cual las extensiones están separadas, el viejo controlador MySQL permanece ahí por razones de compatibilidad. – zneak
Vale la pena señalar que las cosas han cambiado mucho en seis años. 'mysql _ *()' ahora está en desuso y __se eliminará__ pronto. No deberías usarlo para el nuevo código. –