Cuando vamos hacer algún proyecto web, lo común es usar mysql, ya sea por su popularidad, documentación, es la que ofrecen prácticamente el 100% de los servidores de hosting, o por razones técnicas. y si usamos alguna instalación WAPM como AppServer, Wamp o XAMP no nos preocupamos de como conectar PHP con mysql, por que todo esto se hace de manera automática sin necesidad de hacer una configuración especial o adicional. por lo que solo tendremos que preocuparnos por nuestra aplicación.
Y si buscamos como hacer la conexión con mysql en prácticamente cualquier foro que traten el tema, encontraremos un monto de información y tutoriales y en la gran mayoría los ejemplos utilizan mysql:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') or die('No se pudo conectar: ' . mysql_error());
Pero lo que no nos dicen (y si no averiguamos más pues es peor), es que la librería que utiliza esta conexión ya es obsoleta y por lo tanto se le ha dejado de dar soporte, y es que es buena solo hasta la versión 4.1.3. De hay en adelante lo mejor es Mysqli el cual aprovecha las nuevas funcionalidades incorporadas a mysql.
Ventajas de Mysqli
- Prepared statements: a parte de ser más cómodo a la hora de montar nuestras querys, ofrece mucha seguridad contra el SQL injected.
$mysqli = new $stmt = $mysqli->prepare("select usuario from usuarios where i = ?"); $stmt->bind_param('i',$id); $stmt->execute();
- Conexiones seguras: la posibilidad de usar mysqli_ssl_set() permite realizar conexiones seguras indicando detalles del certificado mediante los parámetros.
- Múltiples querys: posibilidad de ejecutar varias querys separadas por punto y coma, en una conexión. Al ser orientado a objetos nos permite agregarle nuevas funcionalidades
- Interfaz orientado a objetos: esta característica permite al desarrollador ampliar el objeto para añadir nuevas funcionalidades más específicas. Por ejemplo se podrían separar los errores de operación (conexión) a los de desarrollo (querys mal formadas).
- Ofrece mucha seguridad contra SQL injection.
- Soporte y actualizaciones de la librería.
¿Cuando usar la conexión Mysql?
Cuando la versión de la base de datos sea menor a 4.1.3 o nuestra versión de PHP sea menor a la 5.0.
Y obviamente usar MySqli cuando usemos versión superiores a las de la respuesta anterior.
AppServ, WAMP, XAMP tienen soporte para MySqli solo que no viene habilitada por default.
A continuación una tabla con las comparativas entre las dos librerías más la conexión con PDO Driver, pero este último es otra historia, que se contara aparte.
Características | mysqli | PDO Driver | mysql |
PHP versión en la que se introdujo | 5.0 | 5.0 | antes de la 3.0 |
compatible con PHP 5.x | Si | Si | Si |
compatible con PHP 6.0 | Si | Si | Si |
MySQL Soporte | Mantenimiento y desarrollo activo | desarrollo activo solo hasta la versión PHP 5.3 | Solo mantenimiento |
MySQL Recomendado para nuevos proyectos. | Si | Si | No |
API supports Charsets | Si | Si | No |
API sentencias preparadas, por parte del server | Si | Si | No |
API sentencias preparadas, por parte del cliente | No | Si | No |
API Soporte procedimientos almacenados | Si | Si | No |
API Múltiples Query’s | Si | Si+ | No |
Soporta todas las versiones superiores a MySQL 4.1+ | Si | Si+ | No |
En KumbiaPHP
Solo hay que cambiar el tipo de conexión (claro una vez habilitada la librería):
[development] host = localhost username = root password = pass name = nombre_bd type = mysqli
Si quieren conocer mas sobre ambas, pueden visitar la documentación oficial y se sorprenderán de la diferencia en cuanto al numero de funciones.