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.
Que bueno que me entero, gracias por el post, muy bueno =)
Respecto de las ventajas de usar MSQLI no estoy de acuerdo.
Programo para terceros y tengo montado en mi PC WAMPP utlima version.
Cuando todo el programa esta OK y lo quiero subir al servidor de mi cliente me reachaza las sentencias (casi todas) de MYSQLI…. Entonces hay que rediseñarlas directamente sobre el servidor final que todos los que usan mis clientes usan MYSQL!!!!