di

Resumen

En este tutorial se describe el uso de la clase mysqli en PHP para interactuar con bases de datos MySQL. Se explican los métodos y propiedades principales de la clase mysqli, incluyendo cómo establecer una conexión, ejecutar consultas, manejar transacciones y cerrar la conexión. También se proporcionan ejemplos de cómo realizar operaciones de manipulación de datos (DML) y consultas SELECT, así como cómo manipular los registros recuperados. Además, se introduce el uso de sentencias preparadas para evitar la inyección SQL y mejorar la seguridad de las consultas. Por último, se incluyen propiedades adicionales de mysqli y mysqli_result que pueden ser útiles para trabajar con bases de datos MySQL.

Objetivos
  • Comprender el uso de la clase mysqli en PHP para interactuar con bases de datos MySQL.

  • Aprender a establecer una conexión con una base de datos MySQL utilizando la clase mysqli.

  • Conocer los métodos y propiedades principales de la clase mysqli para realizar consultas y manejar transacciones.

  • Realizar operaciones de manipulación de datos (DML) y consultas SELECT utilizando la clase mysqli.

  • Manipular los registros recuperados de una base de datos MySQL utilizando los métodos fetch_array(), fetch_assoc() y fetch_object().

  • Utilizar sentencias preparadas para evitar la inyección SQL y mejorar la seguridad de las consultas.

  • Aprender a cerrar la conexión a la base de datos MySQL utilizando el método close().

  • Conocer propiedades adicionales de la clase mysqli y el objeto mysqli_result que pueden ser útiles para trabajar con bases de datos MySQL.

Tip

Disponible el repositorio usado en este tutorial.

1. La clase mysqli

La clase mysqli representa la conexión entre PHP y una base de datos MySQL. Proporciona métodos y propiedades para interactuar con la base de datos, realizar consultas y manejar errores. A continuación se describen los métodos y propiedades principales de la clase mysqli.

1.1. Métodos principales

1.1.1. Constructor

El constructor de la clase mysqli se utiliza para establecer una conexión con la base de datos MySQL. Recibe como parámetros el nombre del host, el nombre de usuario, la contraseña y el nombre de la base de datos.

$mysqli = new mysqli($host, $username, $password, $database);

if ($mysqli->connect_error) {
    die('Error de conexión: ' . $mysqli->connect_error);
}

En este ejemplo, se crea una conexión a una base de datos MySQL utilizando el nombre de host, el nombre de usuario, la contraseña y el nombre de la base de datos. Si la conexión falla, se muestra un mensaje de error.

1.1.2. close()

El método close() se utiliza para cerrar la conexión con la base de datos MySQL.

$mysqli->close();

1.1.3. query()

El método query() se utiliza para ejecutar consultas SQL en la base de datos. Devuelve un objeto mysqli_result para consultas SELECT o true/false para consultas INSERT, UPDATE o DELETE.

$result = $mysqli->query('SELECT * FROM Persona');

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        // Procesar los datos
    }
}

En este ejemplo, se ejecuta una consulta SELECT en la tabla Persona y se procesan los resultados.

1.1.4. rollback() y commit()

Los métodos rollback() y commit() se utilizan para manejar transacciones en la base de datos. rollback() deshace los cambios realizados en la transacción actual, mientras que commit() confirma los cambios.

$mysqli->begin_transaction();

$mysqli->query('INSERT INTO Persona (id, nombre, empresa) VALUES (12, "Juan Pérez", "Empresa XYZ")');
$mysqli->query('INSERT INTO Persona (id, nombre, empresa) VALUES (13, "Ana García", "Empresa ABC")');

if ($mysqli->commit()) {
    echo 'Transacción completada';
} else {
    $mysqli->rollback();
    echo 'Error en la transacción';
}

En este ejemplo, se inicia una transacción, se realizan dos inserciones y se confirma la transacción. Si ocurre un error, se deshacen los cambios.

1.2. Propiedades principales

1.2.1. affected_rows

La propiedad affected_rows devuelve el número de filas afectadas por la última consulta INSERT, UPDATE o DELETE.

$mysqli->query('UPDATE Persona SET nombre = "Carlos López" WHERE id = 12');
echo 'Filas afectadas: ' . $mysqli->affected_rows;

1.2.2. info

La propiedad info devuelve información sobre la última consulta ejecutada.

$mysqli->query('UPDATE Persona SET nombre = "Carlos López" WHERE id = 12');
echo 'Información: ' . $mysqli->info;

1.2.3. connect_error

La propiedad connect_error devuelve el error de conexión si la conexión a la base de datos falla.

$mysqli = new mysqli($host, $username, $password, $database);

if ($mysqli->connect_error) {
    die('Error de conexión: ' . $mysqli->connect_error);
}

1.2.4. host_info

La propiedad host_info devuelve información sobre el host de la conexión.

echo 'Información del host: ' . $mysqli->host_info;

En resumen, la clase mysqli proporciona una interfaz para interactuar con bases de datos MySQL en PHP. Sus métodos y propiedades permiten establecer conexiones, ejecutar consultas, manejar transacciones y obtener información sobre la conexión y las consultas.

2. Conexión al servidor MySQL

Para conectarse a un servidor MySQL utilizando la clase mysqli, se utiliza el constructor de la clase mysqli. La sintaxis es la siguiente:

$mysqli = new mysqli(host, usuario, contraseña, baseDeDatos);

2.1. Bases de datos de ejemplo

Para los ejemplos de este tutorial, se utilizará una base de datos de ejemplo que crearemos en MySQL. A continuación se muestra un script SQL para crear la base de datos tutorial_mysqli y la tabla Persona:

CREATE DATABASE IF NOT EXISTS tutorial_mysqli;

USE tutorial_mysqli;

CREATE TABLE IF NOT EXISTS Persona (
    id INT PRIMARY KEY,
    nombre VARCHAR(50),
    empresa VARCHAR(50)
);

INSERT INTO Persona VALUES (1, 'Juan Pérez', 'Empresa XYZ');
INSERT INTO Persona VALUES (2, 'María López', 'Empresa ABC');

2.2. Ejemplo de conexión

A continuación se muestra un ejemplo de cómo conectarse a un servidor MySQL utilizando la clase mysqli. Los valores de conexión son importados de un archivo de configuración config.php.

Archivo de configuración config.php
<?php
// Configuración de la base de datos
$db_host = "localhost";
$db_usuario = "root";
$db_contra = "";
$db_nombre = "tutorial_mysqli";
?>
Conexión al servidor MySQL
<?php
require 'config.php';

$mysqli = new mysqli($db_host, $db_usuario, $db_contra, $db_nombre);

if ($mysqli->connect_error) {
    die('Error de conexión: ' . $mysqli->connect_error);
}

echo "Conectado " . $mysqli->host_info . "<br/>";

En este ejemplo, se crea una conexión a un servidor MySQL en localhost utilizando el nombre de usuario root, sin contraseña, y la base de datos tutorial_mysqli. Si la conexión falla, se muestra un mensaje de error. Si la conexión es exitosa, se muestra un mensaje indicando que se ha conectado al servidor MySQL, junto con la información del host.

3. DML contra la base de datos MySQL

Para realizar operaciones de manipulación de datos (DML) contra una base de datos MySQL utilizando la clase mysqli, se utiliza el método query(). Este método permite ejecutar sentencias SQL como INSERT, UPDATE, DELETE y SELECT.

3.1. Sintaxis

La sintaxis para ejecutar una sentencia SQL utilizando el método query() es la siguiente:

$mysqli->query(cadenaSQL);

3.2. Ejemplo de INSERT

A continuación se muestra un ejemplo de cómo insertar datos en una tabla utilizando una sentencia INSERT:

$cadenaSQL = "INSERT INTO Persona VALUES(12, 'Juan Pérez', 'Empresa XYZ')";
$mysqli->query($cadenaSQL);

echo "Filas modificadas: " . $mysqli->affected_rows . "<br/>";

En este ejemplo, se inserta una nueva fila en la tabla Persona con los valores 12, 'Juan Pérez' y Empresa XYZ. Después de ejecutar la sentencia INSERT, se muestra el número de filas modificadas utilizando la propiedad affected_rows.

3.3. Ejemplo de UPDATE

A continuación se muestra un ejemplo de cómo actualizar datos en una tabla utilizando una sentencia UPDATE:

$cadenaSQL = "UPDATE Persona SET nombre = 'Carlos López' WHERE id = 12";
$mysqli->query($cadenaSQL);

echo "Filas modificadas: " . $mysqli->affected_rows . "<br/>";

En este ejemplo, se actualiza el nombre de la persona con id igual a 12 a 'Carlos López'. Después de ejecutar la sentencia UPDATE, se muestra el número de filas modificadas utilizando la propiedad affected_rows.

3.4. Ejemplo de DELETE

A continuación se muestra un ejemplo de cómo eliminar datos de una tabla utilizando una sentencia DELETE:

$cadenaSQL = "DELETE FROM Persona WHERE id = 12";
$mysqli->query($cadenaSQL);

echo "Filas modificadas: " . $mysqli->affected_rows . "<br/>";

En este ejemplo, se elimina la fila de la tabla Persona con id igual a 12. Después de ejecutar la sentencia DELETE, se muestra el número de filas modificadas utilizando la propiedad affected_rows.

3.5. Ejemplo de SELECT

A continuación se muestra un ejemplo de cómo recuperar datos de una tabla utilizando una sentencia SELECT:

$cadenaSQL = "SELECT * FROM Persona";
$result = $mysqli->query($cadenaSQL);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Nombre: " . $row["nombre"] . " - Empresa: " . $row["empresa"] . "<br/>";
    }
} else {
    echo "No se encontraron resultados.";
}

En este ejemplo, se recuperan todas las filas de la tabla Persona. Si se encuentran resultados, se recorren y se muestran los valores de los campos id, nombre y empresa de cada fila. Si no se encuentran resultados, se muestra un mensaje indicando que no se encontraron resultados.

En resumen, el método query() de la clase mysqli permite ejecutar sentencias SQL para realizar operaciones de manipulación de datos (DML) en una base de datos MySQL. Utilizando este método, se pueden insertar, actualizar, eliminar y recuperar datos de una tabla.

4. SELECT contra la base de datos MySQL

Para realizar consultas SELECT contra una base de datos MySQL utilizando la clase mysqli, se utiliza el método query(). Este método permite ejecutar sentencias SQL y devuelve un objeto mysqli_result que contiene el resultado de la consulta.

4.1. Sintaxis

La sintaxis para ejecutar una consulta SELECT utilizando el método query() es la siguiente:

$resultado = $mysqli->query(cadenaSQL); // Consulta

Para obtener el número de filas recuperadas por la consulta, se utiliza la propiedad num_rows del objeto mysqli_result:

$resultado->num_rows // Nº de filas recuperadas

4.2. Ejemplo de SELECT

A continuación se muestra un ejemplo de cómo realizar una consulta SELECT y obtener el número de filas recuperadas:

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

echo "Filas recuperadas: " . $resultado->num_rows . "<br/>";

En este ejemplo, se realiza una consulta SELECT para recuperar todas las filas de la tabla Persona. Después de ejecutar la consulta, se muestra el número de filas recuperadas utilizando la propiedad num_rows.

4.3. Tratamiento del result set

El resultado de la consulta SELECT es devuelto en un result set, que es un objeto mysqli_result. El result set contiene todas las filas recuperadas por la consulta y debe ser tratado aparte, fila a fila. Para recorrer el result set y obtener los datos de cada fila, se pueden utilizar métodos como fetch_assoc(), fetch_row() o fetch_array().

A continuación se muestra un ejemplo de cómo tratar el result set utilizando el método fetch_assoc():

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

if ($resultado->num_rows > 0) {
    while ($fila = $resultado->fetch_assoc()) {
        echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . " - Empresa: " . $fila["empresa"] . "<br/>";
    }
} else {
    echo "No se encontraron resultados.";
}

En este ejemplo, se recorre el result set utilizando un bucle while y el método fetch_assoc(), que devuelve cada fila como un array asociativo. Se muestran los valores de los campos id, nombre y empresa de cada fila. Si no se encuentran resultados, se muestra un mensaje indicando que no se encontraron resultados.

En resumen, el método query() de la clase mysqli permite ejecutar consultas SELECT para recuperar datos de una base de datos MySQL. El resultado de la consulta es devuelto en un result set, que debe ser tratado aparte, fila a fila, utilizando métodos como fetch_assoc(), fetch_row() o fetch_array().

5. Manipulación de registros

Para manipular los registros recuperados de una base de datos MySQL utilizando la clase mysqli, se pueden utilizar los métodos fetch_array(), fetch_assoc() y fetch_object() del objeto mysqli_result. Estos métodos permiten acceder a los datos de los registros de diferentes formas.

5.1. fetch_array()

El método fetch_array() devuelve una fila del result set como un array. Los datos son accesibles tanto por índices numéricos como por nombres de campo.

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

while ($fila = $resultado->fetch_array()) {
    echo "ID: " . $fila[0] . " - Nombre: " . $fila['nombre'] . " - Empresa: " . $fila[2] . "<br/>";
}

En este ejemplo, se recorre el result set utilizando un bucle while y el método fetch_array(). Los datos de cada fila son accesibles tanto por índices numéricos (p.e. $fila[0] para el campo id) como por nombres de campo (p.e. $fila['nombre'] para el campo nombre).

5.2. fetch_assoc()

El método fetch_assoc() devuelve una fila del result set como un array asociativo. Los datos son accesibles por nombres de campo.

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

while ($fila = $resultado->fetch_assoc()) {
    echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . " - Empresa: " . $fila["empresa"] . "<br/>";
}

En este ejemplo, se recorre el result set utilizando un bucle while y el método fetch_assoc(). Los datos de cada fila son accesibles por nombres de campo (p.e. $fila["id"] para el campo id).

5.3. fetch_object()

El método fetch_object() devuelve una fila del result set como un objeto. Los datos son accesibles por nombres de campo como propiedades del objeto.

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

while ($fila = $resultado->fetch_object()) {
    echo "ID: " . $fila->id . " - Nombre: " . $fila->nombre . " - Empresa: " . $fila->empresa . "<br/>";
}

En este ejemplo, se recorre el result set utilizando un bucle while y el método fetch_object(). Los datos de cada fila son accesibles por nombres de campo como propiedades del objeto (p.e. $fila→id para el campo id).

En resumen, los métodos fetch_array(), fetch_assoc() y fetch_object() de la clase mysqli_result permiten acceder a los datos de los registros recuperados de una base de datos MySQL de diferentes formas. fetch_array() devuelve los datos como un array accesible por índices numéricos y nombres de campo, fetch_assoc() devuelve los datos como un array asociativo accesible por nombres de campo, y fetch_object() devuelve los datos como un objeto accesible por nombres de campo como propiedades del objeto.

6. Sentencias preparadas para evitar la inyección SQL

Las sentencias preparadas son una técnica eficaz para evitar la inyección SQL. Permiten separar los datos de la consulta SQL, lo que impide que un atacante inserte código SQL malicioso. A continuación se muestran ejemplos de cómo utilizar sentencias preparadas con la clase mysqli utilizando la tabla Persona.

6.1. Ejemplo de INSERT con sentencias preparadas

A continuación se muestra un ejemplo de cómo insertar datos en una tabla utilizando una sentencia INSERT preparada:

$stmt = $mysqli->prepare("INSERT INTO Persona (id, nombre, empresa) VALUES (?, ?, ?)");
$stmt->bind_param("iss", $id, $nombre, $empresa);

$id = 13;
$nombre = "Ana García";
$empresa = "Empresa ABC";
$stmt->execute();

echo "Filas modificadas: " . $stmt->affected_rows . "<br/>";

En este ejemplo, se prepara una sentencia INSERT con marcadores de posición ?. Los valores se enlazan a los marcadores de posición utilizando el método bind_param(), que toma como argumentos el tipo de datos de los valores (i para enteros, s para cadenas) y los valores a enlazar. Después de ejecutar la sentencia preparada, se muestra el número de filas modificadas.

6.2. Ejemplo de UPDATE con sentencias preparadas

A continuación se muestra un ejemplo de cómo actualizar datos en una tabla utilizando una sentencia UPDATE preparada:

$stmt = $mysqli->prepare("UPDATE Persona SET nombre = ?, empresa = ? WHERE id = ?");
$stmt->bind_param("ssi", $nombre, $empresa, $id);

$nombre = "Luis Martínez";
$empresa = "Empresa XYZ";
$id = 13;
$stmt->execute();

echo "Filas modificadas: " . $stmt->affected_rows . "<br/>";

En este ejemplo, se prepara una sentencia UPDATE con marcadores de posición ?. Los valores se enlazan a los marcadores de posición utilizando el método bind_param(). Después de ejecutar la sentencia preparada, se muestra el número de filas modificadas.

6.3. Ejemplo de DELETE con sentencias preparadas

A continuación se muestra un ejemplo de cómo eliminar datos de una tabla utilizando una sentencia DELETE preparada:

$stmt = $mysqli->prepare("DELETE FROM Persona WHERE id = ?");
$stmt->bind_param("i", $id);

$id = 13;
$stmt->execute();

echo "Filas modificadas: " . $stmt->affected_rows . "<br/>";

En este ejemplo, se prepara una sentencia DELETE con un marcador de posición ?. El valor se enlaza al marcador de posición utilizando el método bind_param(). Después de ejecutar la sentencia preparada, se muestra el número de filas modificadas.

6.4. Ejemplo de SELECT con sentencias preparadas

A continuación se muestra un ejemplo de cómo recuperar datos de una tabla utilizando una sentencia SELECT preparada:

$stmt = $mysqli->prepare("SELECT * FROM Persona WHERE id = ?");
$stmt->bind_param("i", $id);

$id = 13;
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Nombre: " . $row["nombre"] . " - Empresa: " . $row["empresa"] . "<br/>";
    }
} else {
    echo "No se encontraron resultados.";
}

En este ejemplo, se prepara una sentencia SELECT con un marcador de posición ?. El valor se enlaza al marcador de posición utilizando el método bind_param(). Después de ejecutar la sentencia preparada, se recuperan los resultados utilizando el método get_result() y se procesan los datos.

En resumen, las sentencias preparadas son una técnica eficaz para evitar la inyección SQL. Permiten separar los datos de la consulta SQL, lo que impide que un atacante inserte código SQL malicioso. Utilizando sentencias preparadas con la clase mysqli, se pueden realizar operaciones de manipulación de datos (DML) y consultas SELECT de forma segura y eficiente.

7. Cierre de la conexión

Es importante cerrar la conexión a la base de datos MySQL una vez que se han realizado todas las operaciones necesarias. Esto libera los recursos asociados con la conexión y mejora el rendimiento de la aplicación. Para cerrar la conexión, se utiliza el método close() de la clase mysqli.

7.1. Sintaxis

La sintaxis para cerrar la conexión a la base de datos MySQL es la siguiente:

$mysqli->close();

7.2. Ejemplo de cierre de la conexión

A continuación se muestra un ejemplo de cómo cerrar la conexión a la base de datos MySQL:

<?php

require 'config.php';

$mysqli = new mysqli($db_host, $db_usuario, $db_contra, $db_nombre);

if ($mysqli->connect_error) {
    die('Error de conexión: ' . $mysqli->connect_error);
}

// Realizar operaciones en la base de datos

// Cerrar la conexión
$mysqli->close();

En este ejemplo, se establece una conexión a una base de datos MySQL, se realizan operaciones en la base de datos y, finalmente, se cierra la conexión utilizando el método close().

En resumen, el método close() de la clase mysqli permite cerrar la conexión a la base de datos MySQL una vez que se han realizado todas las operaciones necesarias. Esto libera los recursos asociados con la conexión y mejora el rendimiento de la aplicación.

8. Propiedades adicionales de mysqli y mysqli_result

Además de las propiedades principales mencionadas anteriormente, la clase mysqli y el objeto mysqli_result proporcionan propiedades adicionales que pueden ser útiles para trabajar con bases de datos MySQL.

8.1. num_rows

La propiedad num_rows del objeto mysqli_result devuelve el número de filas recuperadas por una consulta SELECT.

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

echo "Filas recuperadas: " . $resultado->num_rows . "<br/>";

En este ejemplo, se realiza una consulta SELECT para recuperar todas las filas de la tabla Persona. Después de ejecutar la consulta, se muestra el número de filas recuperadas utilizando la propiedad num_rows.

8.2. affected_rows

La propiedad affected_rows de la clase mysqli devuelve el número de filas afectadas por la última consulta INSERT, UPDATE o DELETE.

$cadenaSQL = "UPDATE Persona SET nombre = 'Carlos López' WHERE id = 12";
$mysqli->query($cadenaSQL);

echo "Filas afectadas: " . $mysqli->affected_rows . "<br/>";

En este ejemplo, se actualiza el nombre de la persona con id igual a 12 a 'Carlos López'. Después de ejecutar la sentencia UPDATE, se muestra el número de filas afectadas utilizando la propiedad affected_rows.

8.3. field_count

La propiedad field_count del objeto mysqli_result devuelve el número de campos recuperados por una consulta SELECT.

$cadenaSQL = "SELECT * FROM Persona";
$resultado = $mysqli->query($cadenaSQL);

echo "Campos recuperados: " . $resultado->field_count . "<br/>";

En este ejemplo, se realiza una consulta SELECT para recuperar todas las filas de la tabla Persona. Después de ejecutar la consulta, se muestra el número de campos recuperados utilizando la propiedad field_count.

En resumen, las propiedades num_rows, affected_rows y field_count proporcionan información adicional sobre los resultados de las consultas SQL y pueden ser útiles para trabajar con bases de datos MySQL utilizando la clase mysqli y el objeto mysqli_result.

9. Ejemplo completo

A continuación se muestra un ejemplo completo que incluye la conexión a la base de datos, la inserción de datos, la actualización de datos, la eliminación de datos, la recuperación de datos y el cierre de la conexión. El ejemplo se hará con sentencias preparadas para evitar la inyección SQL.

Archivo de configuración config.php
<?php
// Configuración de la base de datos
$db_host = "localhost";
$db_usuario = "root";
$db_contra = "";
$db_nombre = "tutorial_mysqli";
?>
Ejemplo completo
<?php

require 'config.php';

$mysqli = new mysqli($db_host, $db_usuario, $db_contra, $db_nombre);

if ($mysqli->connect_error) {
    die('Error de conexión: ' . $mysqli->connect_error);
}

// Insertar datos
$stmt = $mysqli->prepare("INSERT INTO Persona (id, nombre, empresa) VALUES (?, ?, ?)");
$stmt->bind_param("iss", $id, $nombre, $empresa);

$id = 12;
$nombre = "Juan Pérez";
$empresa = "Empresa XYZ";
$stmt->execute();

echo "Filas insertadas: " . $stmt->affected_rows . "<br/>";

// Actualizar datos
$stmt = $mysqli->prepare("UPDATE Persona SET nombre = ?, empresa = ? WHERE id = ?");
$stmt->bind_param("ssi", $nombre, $empresa, $id);

$nombre = "Juan Pérez López";
$empresa = "Empresa XYZ";
$id = 12;
$stmt->execute();

echo "Filas actualizadas: " . $stmt->affected_rows . "<br/>";

// Eliminar datos
$stmt = $mysqli->prepare("DELETE FROM Persona WHERE id = ?");
$stmt->bind_param("i", $id);

$id = 12;
$stmt->execute();

echo "Filas eliminadas: " . $stmt->affected_rows . "<br/>";

// Recuperar datos
$stmt = $mysqli->prepare("SELECT * FROM Persona");
$stmt->execute();
$resultado = $stmt->get_result();

if ($resultado->num_rows > 0) {
    while ($fila = $resultado->fetch_assoc()) {
        echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . " - Empresa: " . $fila["empresa"] . "<br/>";
    }
} else {
    echo "No se encontraron resultados.";
}

// Cerrar la conexión
$mysqli->close();

La figura siguiente muestra el resultado de la ejecución del ejemplo completo:

ejemplo

10. Conclusiones

En este tutorial se ha descrito el uso de la clase mysqli en PHP para interactuar con bases de datos MySQL. Se han explicado los métodos y propiedades principales de la clase mysqli, incluyendo cómo establecer una conexión, ejecutar consultas, manejar transacciones y cerrar la conexión. Se han proporcionado ejemplos de cómo realizar operaciones de manipulación de datos (DML) y consultas SELECT, así como cómo manipular los registros recuperados. Se ha introducido el uso de sentencias preparadas para evitar la inyección SQL y mejorar la seguridad de las consultas. Además, se han incluido propiedades adicionales de mysqli y mysqli_result que pueden ser útiles para trabajar con bases de datos MySQL. La clase mysqli proporciona una interfaz completa y flexible para interactuar con bases de datos MySQL en PHP, permitiendo realizar consultas, transacciones y manipulación de datos de forma sencilla y eficiente.

Licencia

Licencia CC BY-NC-ND 4.0

Copyright (c) 2025 [Manuel Torres - Departamento de Informática - Universidad de Almería]

Este proyecto está licenciado bajo la Licencia CC BY-NC-ND 4.0. Esto significa que puedes compartir el proyecto siempre que cites al autor, no lo uses para fines comerciales y no realices obras derivadas.