Consultas bases de datos MYSQLi Php

Consultas bases de datos MYSQLi en Php

Consultas bases de datos MYSQLi en Php

En este tutorial aprenderemos los diferentes tipos de consultas que podemos realizar en bases de datos MySQL utilizando Php y MySQLi.

Objeto MySQLi

Después de crear el objeto mysqli que contiene la conexión a la base de datos vamos a ver cómo ejecutar consultas.

Si no recuerdas cómo se realizaba la conexión puedes verlo en Conexión a base de datos MYSQLi.

Consultas sin resultado

Las consultas sin resultado no devuelven ningún dato de la base de datos.

Ej: DROP, DELETE, TRUNCATE, CREATE, INSERT Y UPDATE

  • Consultas DROP

Las consultas de DROP (tirar) eliminan totalmente la estructura y los datos de una tabla o una base de datos.

Para realizar consultas a la base de datos, lo primero que hacemos es crear la consulta y guardarla en una variable

$consulta = "DROP TABLE IF EXISTS usuarios";

El siguiente paso es ejecutar la consulta. Para eso usamos el método exec de MYSQLi de esta manera

$conexion->exec($consulta);

Si todo ha ido bien la consulta ya estará realizada.

Si queremos que cuando ocurra un error nos lo muestre podemos incluir la siguiente línea. Lo que hace es que si ocurrió un error en la consulta cierra la conexión y muestra el texto del error.

if($conexion->errno) die($conexion->error);
  • Consultas DELETE

Las consultas de DELETE (borrar) eliminan una o varias filas de una tabla.

Ejemplo de DELETE

$consulta = "DELETE FROM usuarios WHERE nombre = 'Juan'";  
$conexion->exec($consulta);  
if($conexion->errno) die($conexion->error);
  •  Consultas TRUNCATE

Las consultas de TRUNCATE (truncar) eliminan todas las filas de una tabla sin borrar su estructura, además pone los contadores de auto-incremento a 0.

Ejemplo de TRUNCATE

$consulta = "TRUNCATE TABLE usuarios";
$conexion->exec($consulta);
if($conexion->errno) die($conexion->error);
  • Consultas CREATE

Las consultas de CREATE (crear) se utilizan para crear bases de datos o tablas.

Ejemplo de CREATE

$consulta = "CREATE TABLE usuarios (id int NOT NULL PRIMARY KEY AUTO_INCREMENT, nombre varchar(20) NOT NULL, apellido varchar(20))";
$conexion->exec($consulta);
if($conexion->errno) die($conexion->error);
  •  Consultas INSERT

Las consultas de INSERT (insertar) se utilizan para insertar registros en una tabla de una base de datos.

Ejemplo de INSERT

$consulta = "INSERT INTO usuarios (nombre, apellido) VALUES ('Juan', 'Perez')";
$conexion->exec($consulta);
if($conexion->errno) die($conexion->error);
  • Consultas UPDATE

Las consultas de UPDATE (actualizar) se utilizan para actualizar registros de una tabla.

Ejemplo de UPDATE

$consulta = "UPDATE usuarios SET nombre = 'Luis' WHERE nombre = 'Juan'";
$conexion->exec($consulta);
if($conexion->errno) die($conexion->error);

 Consultas con resultado. SELECT

Devuelven datos de la base de datos. Vamos a ver cómo recogerlos y utilizarlos.

Cuando las consultas devuelven un resultado tenemos que guardar ese resultado en una variable.

$consulta = "SELECT nombre, apellido FROM usuarios WHERE id = 2";
$resultado = $conexion->query($consulta);

La variable $resultado es como una tabla virtual donde se guarda uno o varios registros (filas) devueltos por la consulta.

El siguiente paso es recorrer esa tabla de resultados para acceder a sus datos. Para eso utilizamos el método fetch_assoc()

$resultado->fetch_assoc()

Cuando el resultado de la consulta es un único registro podemos acceder a sus datos directamente de esta manera

$consulta = "SELECT nombre, apellido FROM usuarios WHERE id = 2";
$resultado = $conexion->query($consulta);
if($consulta->errno) die($consulta->error);
//Guardamos el registro en la variable $fila
$fila = $resultado->fetch_assoc();
//El resultado de la consulta estarán en nombre y apellido, entonces:
$resulNombre = $fila['nombre'];
$resulApellido = $fila['apellido'];

Cuando el resultado contiene más de una fila o registro debemos hacer un bucle para recorrerlos

$consulta = "SELECT * FROM usuarios";
$resultado = $conexion->query($consulta);
if($consulta->errno) die($consulta->error);
//Ejemplo para imprimir los datos. El bucle recorre todos los registros.
while($fila = $resultado->fetch_assoc()) {
    echo "ID: " . $fila['id'] . ", Nombre: " . $fila['nombre'] . ", Apellido: " . $fila['apellido'] . "<br>";
}

Además del método fetch_assoc(), que utiliza un array asociativo para guardar el resultado de la consulta, podemos utilizar otros como fetch_array(), que utiliza un array indexado, o fetch_object(), que utiliza un array de objetos.

Vamos a ver un ejemplo de estos otros dos métodos

Ejemplo de fetch_array()

while($fila = $resultado->fetch_array()) {
    echo "ID: " . $fila[0] . ", Nombre: " . $fila[1] . ", Apellido: " . $fila[2] . "<br>";
}

Ejemplo de fetch_object()

class ejemplo {
    function mostrarDatos() {
        return $this->id . ", " . $this->nombre . ", " . $this->apellido;
    }
}
$consulta = "SELECT * FROM usuario";
$resultado = $conexion->query($consulta);
while($fila = $resultado->fetch_object("ejemplo")) {
    echo $fila->mostrarDatos();
}

Para liberar el resultado de la consulta de la memoria utilizaremos el método free()

$resultado->free();

 Funciones útiles de MYSQLi

  • affected_rows

La función affecter_rows devuelve el número de registros afectados en una consulta de tipo DROP, DELETE, CREATE, UPDATE O INSERT.

$afectados = $resultado->affected_rows;
  •  num_rows

Devuelve el número de registros que devuelve una consulta SELECT.

$registros = $resultado->num_rows;
  • insert_id

Devuelve el último ID generado al insertar un registro en una tabla que tiene una clave primaria AUTO_INCREMENT

$ultimaId = $resultado->insert_id;

 Desconexión de la base de datos

Para cerrar la conexión y liberar los recursos y la memoria asociada a la conexión utilizamos el método close()

$conexion->close();

Si te ha gustado no olvides compartir en redes sociales.

Espero que te haya servido. Cualquier duda deja un comentario. Un saludo

Dejar un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

2 ideas sobre “Consultas bases de datos MYSQLi en Php”

Translate »
Ir a la barra de herramientas