Uno de los temas con los que tenemos que tratar al interactuar con bases de datos nos encontramos con las conexiones a la base de datos para lo que primero debemos tener una base de datos correctamente configurada y con contenido o lo podemos generar después de conectarnos, iniciamos las opciones existentes.
Conectando a base de datos MySQL utilizando MySQLi
MySQLi (MySQL Improved) es la extensión mejorada de MySQL existente a partir de MySQL 4.1.3 si nuestro servidor cuenta con esta extensión es una opción recomendada, para hacer una conexión sencilla podemos utilizar el siguiente código
$conexion = new mysqli("host", "usuario", "contraseña", "basedatos");
// Verificar la conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}
Lenguaje del código: PHP (php)
Después de utilizar la conexión podemos realizar consultas utilizando los métodos existentes en esta extensión por ejemplo:
Realizar un SELECT con MySQLi
Podemos ver el siguiente ejemplo donde retomamos y mostramos los datos a partir de un select:
$conexion = new mysqli("host", "usuario", "contraseña", "basedatos");
// Verificar la conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}
// Consulta SELECT
$query = "SELECT id, nombre, email FROM usuarios";
$resultado = $conexion->query($query);
// Verificar si la consulta fue exitosa
if ($resultado) {
// Obtener los resultados como un array asociativo
while ($fila = $resultado->fetch_assoc()) {
echo "ID: " . $fila['id'] . ", Nombre: " . $fila['nombre'] . ", Email: " . $fila['email'] . "<br>";
}
} else {
echo "Error en la consulta: " . $conexion->error;
}
// Cerrar la conexión
$conexion->close();
Lenguaje del código: PHP (php)
Realizar un INSERT con MySQLi
Continuamos con los ejemplos ahora veamos un INSERT
$conexion = new mysqli("host", "usuario", "contraseña", "basedatos");
// Verificar la conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}
// Datos para la inserción
$nombre = "Juan";
$email = "juan@example.com";
// Consulta INSERT
$query = "INSERT INTO usuarios (nombre, email) VALUES ('$nombre', '$email')";
$resultado = $conexion->query($query);
// Verificar si la consulta fue exitosa
if ($resultado) {
echo "Registro insertado con éxito.";
} else {
echo "Error en la consulta: " . $conexion->error;
}
// Cerrar la conexión
$conexion->close();
Lenguaje del código: PHP (php)
Realizar un UPDATE con MySQLi
Recordemos que todo depende de nuestra base de datos.
$conexion = new mysqli("host", "usuario", "contraseña", "basedatos");
// Verificar la conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}
// Datos para la actualización
$nuevoNombre = "Pedro";
$idUsuario = 1;
// Consulta UPDATE
$query = "UPDATE usuarios SET nombre='$nuevoNombre' WHERE id=$idUsuario";
$resultado = $conexion->query($query);
// Verificar si la consulta fue exitosa
if ($resultado) {
echo "Registro actualizado con éxito.";
} else {
echo "Error en la consulta: " . $conexion->error;
}
// Cerrar la conexión
$conexion->close();
Lenguaje del código: PHP (php)
Realizar un DELETE con MySQLi
$conexion = new mysqli("host", "usuario", "contraseña", "basedatos");
// Verificar la conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}
// ID del usuario a eliminar
$idUsuario = 2;
// Consulta DELETE
$query = "DELETE FROM usuarios WHERE id = $idUsuario";
$resultado = $conexion->query($query);
// Verificar si la consulta fue exitosa
if ($resultado) {
echo "Registro eliminado con éxito.";
} else {
echo "Error en la consulta: " . $conexion->error;
}
// Cerrar la conexión
$conexion->close();
Lenguaje del código: PHP (php)
Con esto ya podemos realizar un CRUD sencillo.
Otra opción para conectarnos cuando no tenemos la extensión es utilizar PDO, y lo que veremos a continuación.
Conectando a MySQL utilizando PDO
PDO es una interfaz de acceso a la base de datos que proporciona una capa de abstracción de base de datos que permite utilizar las mismas instrucciones con distintas bases de datos. Es más general y puede trabajar con diferentes tipos de bases de datos, no solo MySQL.
$dsn = "mysql:host=host;dbname=basedatos";
$usuario = "usuario";
$contraseña = "contraseña";
try {
$conexion = new PDO($dsn, $usuario, $contraseña);
} catch (PDOException $e) {
echo "Conexión fallida: " . $e->getMessage();
}
Lenguaje del código: PHP (php)
Con esto ya podremos hacer consultas a la base de datos por ejemplo:
Realizando un CRUD con PDO
Realizar un INSERT con PDO
$dsn = "mysql:host=host;dbname=basedatos";
$usuario = "usuario";
$contrasena = "contraseña";
try {
$conexion = new PDO($dsn, $usuario, $contrasena);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Datos para la inserción
$nombre = "Nuevo Usuario";
$email = "nuevo@example.com";
// Consulta INSERT
$query = "INSERT INTO usuarios (nombre, email) VALUES (:nombre, :email)";
$stmt = $conexion->prepare($query);
$stmt->bindParam(':nombre', $nombre);
$stmt->bindParam(':email', $email);
$stmt->execute();
echo "Registro insertado con éxito.";
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conexion = null;
Lenguaje del código: PHP (php)
Realizar un SELECT con PDO
$dsn = "mysql:host=host;dbname=basedatos";
$usuario = "usuario";
$contrasena = "contraseña";
try {
$conexion = new PDO($dsn, $usuario, $contrasena);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Consulta SELECT
$query = "SELECT id, nombre, email FROM usuarios";
$stmt = $conexion->prepare($query);
$stmt->execute();
// Obtener resultados como un array asociativo
$resultados = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($resultados);
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conexion = null;
Lenguaje del código: PHP (php)
Realizar un UPDATE con PDO
$dsn = "mysql:host=host;dbname=basedatos";
$usuario = "usuario";
$contrasena = "contraseña";
try {
$conexion = new PDO($dsn, $usuario, $contrasena);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Datos para la actualización
$nuevoNombre = "Nombre Actualizado";
$idUsuario = 1;
// Consulta UPDATE
$query = "UPDATE usuarios SET nombre = :nombre WHERE id = :id";
$stmt = $conexion->prepare($query);
$stmt->bindParam(':nombre', $nuevoNombre);
$stmt->bindParam(':id', $idUsuario);
$stmt->execute();
echo "Registro actualizado con éxito.";
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conexion = null;
Lenguaje del código: PHP (php)
Realizar un DELETE con PDO
$dsn = "mysql:host=host;dbname=basedatos";
$usuario = "usuario";
$contrasena = "contraseña";
try {
$conexion = new PDO($dsn, $usuario, $contrasena);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// ID del usuario a eliminar
$idUsuario = 2;
// Consulta DELETE
$query = "DELETE FROM usuarios WHERE id = :id";
$stmt = $conexion->prepare($query);
$stmt->bindParam(':id', $idUsuario);
$stmt->execute();
echo "Registro eliminado con éxito.";
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conexion = null;
Lenguaje del código: PHP (php)
Con lo anterior ya podemos trabajar de manera sencilla con estas dos opciones y realizar nuestros proyectos.