¿Qué es mejor, MySQL o MySQLi? ¿Y por qué? ¿Cuál debería usar?
Me refiero a mejor no solo en términos de rendimiento, sino de cualquier otra característica relevante.
Si echa un vistazo a Descripción general de la extensión mejorada de MySQL , debería decirle todo lo que necesita saber sobre las diferencias entre los dos.
Las principales características útiles son:
mysql_*()
ahora está en desuso y se eliminará pronto. No deberías usarlo para un nuevo código.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 nuevos desarrollos:
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:
* http://news.php.net/php.internals/53799
Hay una matriz de características adicionales que compara las bibliotecas (nuevo mysqlnd versus libmysql) en
y un artículo de blog muy completo en
fuente
He abandonado el uso de mysqli. Es simplemente demasiado inestable. He tenido consultas que bloquean PHP usando mysqli pero funcionan bien con el paquete mysql. También mysqli se bloquea en columnas LONGTEXT . Este error se ha planteado en varias formas desde al menos 2005 y permanece roto . Sinceramente, me gustaría usar declaraciones preparadas, pero mysqli simplemente no es lo suficientemente confiable (y nadie parece molestarse en arreglarlo). Si realmente quieres declaraciones preparadas, ve con DOP.
fuente
MySQLi significa MySQL mejorado. Es una interfaz orientada a objetos para los enlaces MySQL que hace que las cosas sean más fáciles de usar. También ofrece soporte para declaraciones preparadas (que son muy útiles). Si estás en PHP 5 usa MySQLi.
fuente
Lo que es mejor es PDO; Es una interfaz menos cruda y también proporciona las mismas características 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.
fuente
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 los comandos SQL. Realmente no confío en las funciones de 'escape'. la conexión de la base de datos es un protocolo binario, ¿por qué usar un sub-protocolo limitado a ASCII para los parámetros?
fuente