Para conectarnos a la base de datos `db_dataBase`, necesitamos definir los parámetros de conexión:
<?php
// Datos de conexión
$host = 'localhost';
$usuario = 'root';
$password = 'gAsDev=7A1B??';
$base_datos = 'db_dataBase';
// Crear conexión
$conexion = new mysqli($host, $usuario, $password, $base_datos);
// Verificar conexión
if ($conexion->connect_error) {
die("❌ Error en la conexión: " . $conexion->connect_error);
} else {
echo "✅ Conexión establecida con éxito";
}
// Configurar UTF-8
$conexion->set_charset("utf8mb4");
?>
Ejecuta este código en **phpMyAdmin** para crear la base de datos y la tabla usuarios:
CREATE DATABASE IF NOT EXISTS db_dataBase;
USE db_dataBase;
CREATE TABLE IF NOT EXISTS usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
INSERT INTO usuarios (nombre, email) VALUES
('Juan Pérez', 'juan.perez@example.com'),
('Ana Gómez', 'ana.gomez@example.com'),
('Carlos López', 'carlos.lopez@example.com');
Para obtener datos de la base de datos, utilizamos una consulta SELECT en PHP:
<?php
// Consulta SQL para seleccionar ID, nombre y email de la tabla usuarios
$sql = "SELECT id, nombre, email FROM usuarios";
// Ejecutar la consulta en la base de datos
$resultado = $conexion->query($sql);
// Verificar si hay resultados
if ($resultado->num_rows > 0) {
// Recorrer y mostrar cada fila obtenida
while ($fila = $resultado->fetch_assoc()) {
echo "ID: " . $fila["id"] . " - Nombre: " . $fila["nombre"] . " - Email: " . $fila["email"] . "
";
}
} else {
// Mostrar mensaje si no hay datos en la tabla
echo "⚠️ No hay datos en la tabla 'usuarios'.";
}
?>
Si queremos mostrar los datos en una tabla HTML:
<table border="1">
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Email</th>
</tr>
<?php
while ($fila = $resultado->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $fila["id"] . "</td>";
echo "<td>" . $fila["nombre"] . "</td>";
echo "<td>" . $fila["email"] . "</td>";
echo "</tr>";
}
?>
</table>
Para liberar recursos, siempre cerramos la conexión:
<?php
$conexion->close();
?>
Aquí tienes todo el código junto para probarlo en un archivo `conexion.php`:
<?php
$host = 'localhost';
$usuario = 'root';
$password = 'gAsDev=7A1B??';
$base_datos = 'db_dataBase';
$conexion = new mysqli($host, $usuario, $password, $base_datos);
if ($conexion->connect_error) {
die("❌ Error en la conexión: " . $conexion->connect_error);
}
$conexion->set_charset("utf8mb4");
$sql = "SELECT id, nombre, email FROM usuarios";
$resultado = $conexion->query($sql);
echo "<h2>Lista de Usuarios</h2>";
echo "<table border='1'><tr><th>ID</th><th>Nombre</th><th>Email</th></tr>";
while ($fila = $resultado->fetch_assoc()) {
echo "<tr><td>" . $fila["id"] . "</td><td>" . $fila["nombre"] . "</td><td>" . $fila["email"] . "</td></tr>";
}
echo "</table>";
$conexion->close();
?>
Se define una consulta SQL que selecciona tres campos (`id`, `nombre` y `email`) de la tabla `usuarios`. 📌 **Objetivo:** Obtener la lista de usuarios registrados en la base de datos.
Se ejecuta la consulta en la base de datos mediante el método `$conexion->query($sql)
`.
📌 **Objetivo:** Pedir a MySQL que devuelva los datos de la tabla `usuarios`.
Se usa `if ($resultado->num_rows > 0)
` para verificar si la consulta devolvió registros.
📌 **Objetivo:** Comprobar si hay usuarios almacenados en la base de datos.
Si hay datos, se utiliza un bucle `while ($fila = $resultado->fetch_assoc())
` para recorrer cada fila obtenida.
📌 **Objetivo:** Leer cada usuario y mostrar su información.
Dentro del bucle, se usa `echo
` para mostrar el ID, el nombre y el email de cada usuario en pantalla.
📌 **Objetivo:** Presentar la información de forma clara y organizada.
Si no hay usuarios registrados, se muestra el mensaje `⚠️ No hay datos en la tabla 'usuarios'.
`
📌 **Objetivo:** Informar al usuario cuando la tabla está vacía.
Si tu aplicación muestra caracteres extraños en lugar de letras con tildes (á, é, í, ó, ú) o la letra "ñ", es probable que haya un problema con la configuración de codificación.
Asegúrate de que tu base de datos MySQL use el **conjunto de caracteres UTF-8**:
CREATE DATABASE mi_base_de_datos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Al conectarte a la base de datos en PHP, usa `$conn->set_charset("utf8mb4")` para evitar problemas con los caracteres especiales:
<?php
$conn = new mysqli("localhost", "usuario", "contraseña", "mi_base_de_datos");
if ($conn->connect_error) {
die("❌ Conexión fallida: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
?>
En la cabecera del archivo HTML, asegúrate de incluir la línea:
<meta charset="UTF-8">
Para que todas las páginas usen la codificación correcta, puedes incluir este código en el archivo principal de tu aplicación:
header('Content-Type: text/html; charset=utf-8');
A continuación, te mostramos un ejemplo de cómo insertar y mostrar correctamente caracteres en español desde una base de datos:
CREATE TABLE Usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255) NOT NULL,
comentario TEXT,
email VARCHAR(255) NOT NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
INSERT INTO Usuarios (nombre, comentario, email) VALUES
('José Pérez', '¡Hola! ¿Cómo estás?', 'jose@example.com'),
('María Gómez', 'Bienvenido a la aplicación.', 'maria@example.com');
<?php
include('conexion.php');
$sql = "SELECT * FROM Usuarios";
$result = $conn->query($sql);
echo "<table border='1'><tr><th>Nombre</th><th>Comentario</th><th>Email</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . htmlspecialchars($row['nombre'], ENT_QUOTES, 'UTF-8') . "</td>";
echo "<td>" . htmlspecialchars($row['comentario'], ENT_QUOTES, 'UTF-8') . "</td>";
echo "<td>" . htmlspecialchars($row['email'], ENT_QUOTES, 'UTF-8') . "</td>";
echo "</tr>";
}
echo "</table>";
?>
Este ejemplo te enseñará a conectar una base de datos **MySQL** con PHP utilizando **PDO (PHP Data Objects)**. También incluye un **formulario** para agregar usuarios y una **tabla** para mostrar los datos en tiempo real.
Primero, definimos las credenciales y establecemos la conexión usando **try-catch** para manejar errores.
$host = 'localhost';
$db = 'db_ejemplo';
$user = 'root';
$pass = 'tu_contraseña';
try {
$conexion = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "✅ Conexión exitosa a la base de datos.";
} catch (PDOException $e) {
echo "❌ Error de conexión: " . $e->getMessage();
}
<div class="form-container">
<form action="" method="POST">
<label for="nombre">Nombre:</label>
<input type="text" name="nombre" required>
<label for="email">Email:</label>
<input type="email" name="email" required>
<button type="submit" name="guardar">Guardar Usuario</button>
</form>
<table>
<thead>
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<?php
// Conexión a la base de datos
$host = 'localhost';
$db = 'db_ejemplo';
$user = 'root';
$pass = 'tu_contraseña';
try {
$conexion = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Insertar usuario si el formulario fue enviado
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["guardar"])) {
$nombre = $_POST["nombre"];
$email = $_POST["email"];
$sql = "INSERT INTO usuarios (nombre, email) VALUES (:nombre, :email)";
$stmt = $conexion->prepare($sql);
$stmt->bindParam(":nombre", $nombre);
$stmt->bindParam(":email", $email);
$stmt->execute();
echo "<p style='color: green;'>✅ Usuario agregado correctamente.</p>";
}
// Mostrar usuarios
$sql = "SELECT id, nombre, email FROM usuarios";
$stmt = $conexion->query($sql);
while ($fila = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>
<td>{$fila['id']}</td>
<td>{$fila['nombre']}</td>
<td>{$fila['email']}</td>
</tr>";
}
} catch (PDOException $e) {
echo "<p style='color: red;'>❌ Error: " . $e->getMessage() . "</p>";
}
?>
</tbody>
</table>
💡 Para usar esta conexión en otros archivos: Basta con incluir include "conexion.php";
al inicio y usar $conexion
para interactuar con la base de datos.
💡 En proyectos nuevos, **PDO** es la opción recomendada por su flexibilidad y seguridad.