Inicio > PHP > Conexiones mysqli

CONEXIONES MYSQLI

14/10/2017PHP

 

Hace poco migré mi página web a php7 y uno de los cambios fundamentales es que tuve que empezar a usar mysqlcli para conectarme a MySQL.
Para conectarme a la base de datos usé la función mysqli_connect y todo ha ido bien. Pero mirando por internet, he descubierto que con b>mysqlcli hay otra manera de conectarse a la base de datos con la función mysqli_real_connect.
La diferencia entre mysqli_connect y mysqli_real_connect:

  • mysqli_real_connect necesita un objeto válido que haya sido creado por la función mysqli_init.
  • Con la función mysqli_options se usa para establecer opciones extra y para modificar al comportamiento de una conexión se puede llamar varias veces a esta función para establecer varias opciones. Debería invocarse después de mysqli_init y antes de mysqli_real_connect. Hay varias opciones que se pueden consultar en la página oficial de php.
  • Parámetro flags. Para establecer el tipo de conexión.Hay varias opciones que se pueden consultar en la página oficial de php.
Con el siguiente ejemplo se ve claramente como funciona el nuevo objeto de php para conectarse a MySQL:

//Conexion a la bd pruebas
$mysqli = new mysqli('127.0.0.1', 'tu_usuario', 'tu_contraseña', 'pruebas');
//Se comprueba si ha habido un error comprobando el número de error y s emuestra el error ocurrido
if ($mysqli->connect_errno) {
echo 'Error al conectarse a la base de datos.';
echo 'Error: Fallo al conectarse a MySQL debido a: ';
echo 'Errno: ' . $mysqli->connect_errno;
echo 'Error: ' . $mysqli->connect_error;
exit;
}
$sql = 'SELECT alumno_id, nombre, apellido FROM alumnos WHERE alumno_id = '.$alumno_id;

$resultado = $mysqli->query($sql);

if ($resultado->num_rows === 0) {
echo 'No se ha encontrado el alumno con id '.$alumno_id;
exit;
}
//Se guarda el resultado en un array asociativo
$alumno= $resultado->fetch_assoc();
echo 'Datos del alumno: ' . $alumno['nombre'] . ' ' . $alumno['appellido'];
//Se libera memoria
$resultado->free();
//Se cierra conexión con base de datos
$mysqli->close();

El ejemplo anterior es bastante sencillito y hay una parte del código que se debe mejorar que es la parte donde se recuperan los datos del alumno. Para ver la mejora que se debería hacer os recomiendo leer el post sobre inyección de sql. Que es algo que hay que hacer siempre como medida de seguridad.