sirve que para mysqli_real_escape_string mysqli_query mysqli_connect mysql_real_escape_string php mysql

php - para - mysqli_query insert



MySQL vs MySQLi cuando se usa PHP (6)

¿Qué es mejor, MySQL o MySQLi? ¿Y por qué? ¿Qué debería usar?

Mejor no solo en términos de rendimiento, sino de cualquier otra característica relevante.


Hay una página de manual dedicada a ayudar a elegir entre mysql, mysqli y PDO en

El equipo de PHP recomienda mysqli o PDO_MySQL para un nuevo desarrollo:

Se recomienda utilizar las extensiones mysqli 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 características que compara las API de extensión. Las principales diferencias entre mysqli y mysql API son las 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 de características adicional que compara las bibliotecas (nuevo mysqlnd versus libmysql) en

y un artículo de blog muy completo en


He abandonado el uso de mysqli. Simplemente es demasiado inestable. He tenido consultas que bloquean PHP usando mysqli pero funcionan bien con el paquete mysql. También mysqli se cuelga en columnas LONGTEXT . 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.


Lo que es mejor es PDO; es una interfaz menos costosa y también ofrece las mismas funciones que MySQLi.

Usar declaraciones preparadas es bueno porque 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.


Si echa un vistazo a la Descripción general de la extensión mejorada de MySQL , debe decirle todo lo que necesita saber sobre las diferencias entre los dos.

Las principales características útiles son:

  • una interfaz orientada a objetos
  • soporte para declaraciones preparadas
  • soporte para múltiples declaraciones
  • soporte para transacciones
  • capacidades mejoradas de depuración
  • soporte de servidor incorporado.

para mí, las declaraciones preparadas son 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?