Tutoriales de Informática y Dispositivos Móviles
Tutoriales de Informática y Dispositivos Móviles
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.

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

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

Ejemplo

$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

Ejemplo

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

Ejemplo

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

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

Ejemplo

$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

$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

$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

$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

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

Ejemplo

$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()

Ejemplo

$resultado->fetch_assoc()

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

Ejemplo

$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

Ejemplo

$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()

Ejemplo

$resultado->free();

Funciones útililes 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.

Ejemplo

$afectados = $resultado->affected_rows;
  • num_rows

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

Ejemplo

$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

Ejemplo

$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()

Ejemplo

$conexion->close();

Más tutoriales de PHP

Deja 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 »
A %d blogueros les gusta esto: