Cual usar MySQLi & MySQL como conexión a BD

imageCuando 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.

Mysql

MySqli

govani

6 Replies to “Cual usar MySQLi & MySQL como conexión a BD”

  1. 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!!!!

Responder a Anónimo Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *