Saltar al contenido

PHP MySQLi

En este artículo, nos centraremos en la extensión PHP MySQLi, que se utiliza para interactuar con bases de datos MySQL en PHP. Le proporcionaremos una visión general de la extensión, su funcionamiento y ejemplos de su uso.

Introducción a la extensión MySQLi

La extensión MySQLi es una extensión de PHP que proporciona una interfaz para interactuar con bases de datos MySQL en PHP. Es una versión mejorada de la antigua extensión MySQL y ofrece mayor seguridad, rendimiento y funcionalidad.

La extensión MySQLi proporciona dos interfaces diferentes para interactuar con bases de datos MySQL: una interfaz orientada a objetos y una interfaz procedural. Aunque la interfaz procedural (mysqli_connect(), mysqli_query(), etc.) también está disponible, el enfoque orientado a objetos es generalmente preferido en PHP moderno. En este artículo, nos centraremos en la interfaz orientada a objetos.

Cómo usar la extensión MySQLi

Usar la extensión MySQLi es muy sencillo. Solo necesitas crear un nuevo objeto MySQLi, que representa una conexión a una base de datos MySQL. Aquí tienes un ejemplo:

¿Cómo usar la extensión MySQLi?

php
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}

$mysqli->close();
?>

En este ejemplo, creamos un nuevo objeto MySQLi con el constructor mysqli(), pasando el nombre del host, el nombre de usuario, la contraseña y el nombre de la base de datos como argumentos. Luego verificamos si la conexión fue exitosa comprobando la propiedad connect_error del objeto MySQLi.

Luego ejecutamos una consulta SELECT para recuperar todas las filas de una tabla llamada users. Iteramos sobre el conjunto de resultados utilizando un bucle while y mostramos el nombre y el correo electrónico de cada usuario.

Finalmente, cerramos la conexión MySQLi utilizando el método close() del objeto MySQLi.

Uso avanzado

La extensión MySQLi proporciona muchos otros métodos para interactuar con bases de datos MySQL. Por ejemplo, puedes usar el método prepare() para preparar una sentencia con marcadores de posición y luego ejecutar la sentencia con diferentes valores de parámetros. Aquí tienes un ejemplo:

Uso avanzado de PHP MYSQLi

php
<?php
$age = 18;
$stmt = $mysqli->prepare("SELECT name, email FROM users WHERE age > ?");
$stmt->bind_param("i", $age);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
$stmt->close();
?>

Nota: El método get_result() requiere el controlador mysqlnd. Si tu entorno utiliza un controlador diferente, deberás enlazar las variables de resultado utilizando bind_result() en su lugar.

En este ejemplo, utilizamos el método prepare() para preparar una sentencia SELECT con un marcador de posición para el parámetro age. Las sentencias preparadas separan la lógica SQL de los datos, lo que previene eficazmente los ataques de inyección SQL al garantizar que la entrada del usuario nunca se interprete como código ejecutable. Luego enlazamos un valor de 18 al parámetro utilizando el método bind_param(). Ejecutamos la sentencia con el método execute() y recuperamos el conjunto de resultados con el método get_result(). Posteriormente, iteramos sobre el conjunto de resultados y mostramos el nombre y el correo electrónico de cada usuario.

Conclusión

En conclusión, la extensión MySQLi es una herramienta poderosa para interactuar con bases de datos MySQL en PHP. Al comprender cómo usar la extensión y sus escenarios de uso avanzado, puedes aprovechar esta funcionalidad para crear aplicaciones basadas en bases de datos potentes y seguras en tus scripts PHP.

Práctica

¿Cuáles son las características importantes de PHP MySQLi?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.