No quedaba más remedio que cambiar a MySQLi, ya que la antigua extensión mysql había quedado anticuada. Además, al desarrollar la extensión antigua, se había intentado que fuera compatible con las versiones anteriores, de forma que el código resultaba difícil de actualizar, puesto que databa de los inicios de PHP y MySQL y, en parte, no había sido desarrollado de la mejor manera.
Si, por ejemplo, no se indicaba ningún recurso de conexión explícitamente, todas las funciones intentaban utilizar la última conexión que se había producido. En el peor de los casos, mysql_query() podía incluso acceder a una base de datos totalmente distinta. El identificador de conexión era opcional en la extensión antigua, mientras que en la nueva sí debe indicarse. También se han añadido, además, prepared statements, que hacen que la lectura de los datos de la base de datos sea más rápida y más segura.
Por suerte, muchas funciones pueden modificarse simplemente añadiendo una i a la función mysql(). No obstante, existen algunas diferencias ambas extensiones.
Snippet: identificador de conexión en MySQL y MySQLi
Algunas funciones de mysqli() requieren un identificador de conexión, es decir, una variable PHP generada al realizar la conexión con la base de datos. En el siguiente ejemplo, será $link.