Tema 15 · PHP & PDO

Crear una Base de Datos y Probar Conexión con PHP PDO

Aprende a conectar tus scripts PHP a MariaDB/MySQL utilizando la extensión estándar PDO, manejando excepciones y previniendo errores de conexión.

¿Por qué Usar PDO en Lugar de mysqli o mysql_connect?

En el desarrollo web profesional con PHP moderno, PDO (PHP Data Objects) es la capa de abstracción estándar de la industria. A diferencia de las funciones antiguas mysql_* (eliminadas hace años) o mysqli_* (atadas únicamente a MySQL), PDO ofrece:

  • Soporte multi-motor: Si cambias de MySQL a PostgreSQL o SQLite, el 90% de tu código PHP se mantiene intacto.
  • Manejo de errores profesional con Excepciones: Permite capturar fallos de conexión con bloques try...catch sin exponer contraseñas al usuario.
  • Consultas preparadas obligatorias: Protección nativa contra ataques de Inyección SQL.

Estructura del DSN (Data Source Name) en XAMPP

Para conectar a XAMPP por defecto, la cadena de conexión DSN se compone de:

$dsn = "mysql:host=localhost;dbname=mi_tienda_db;charset=utf8mb4";
$usuario = "root";
$password = ""; // Contraseña vacía por defecto en XAMPP

⚡ Script Profesional de Conexión y Consulta con PDO

Guarda este archivo en C:\xampp\htdocs\prueba\conexion.php para verificar la comunicación en vivo:

conexion.php
Solo lectura
<?php
// Configuración de credenciales de XAMPP local
$host = '127.0.0.1';
$db   = 'test'; // O el nombre de tu base de datos creada en phpMyAdmin
$user = 'root';
$pass = '';     // Vacía por defecto
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";

$opciones = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION, // Lanza excepciones en errores
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,       // Retorna arrays asociativos
    PDO::ATTR_EMULATE_PREPARES   => false,                  // Consultas preparadas reales
];

try {
    $pdo = new PDO($dsn, $user, $pass, $opciones);
    echo "<h3>✅ ¡Conexión Exitosa con MariaDB/MySQL en XAMPP!</h3>";
    
    // Consulta de prueba: versión del motor
    $stmt = $pdo->query("SELECT VERSION() AS version_motor");
    $resultado = $stmt->fetch();
    echo "<p><strong>Versión del Servidor:</strong> " . htmlspecialchars($resultado['version_motor']) . "</p>";

} catch (PDOException $e) {
    // Si falla la conexión, muestra el error de forma segura
    echo "<h3>❌ Error al conectar a la base de datos:</h3>";
    echo "<p>" . htmlspecialchars($e->getMessage()) . "</p>";
}
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Cuál es la principal ventaja de configurar PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION al conectar PHP con MySQL?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual de XAMPP: Instalación & Pruebas y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.