Guía Rápida: Bases de Datos con MySQL
En esta sesión aprenderás a conectar tu aplicación PHP con una base de datos MySQL utilizando dos enfoques muy populares: mysqli y PDO (PHP Data Objects). Te explicaremos cómo usar ambos métodos, las diferencias entre ellos y cómo elegir el adecuado para tu proyecto.
Cuando trabajas con bases de datos MySQL en PHP, es esencial establecer una conexión entre tu aplicación PHP y la base de datos para poder interactuar con ella (leer datos, escribir información, etc.). Existen varias formas de hacer esto, pero las dos más comunes son mysqli y PDO.
- mysqli (MySQL Improved): Específicamente diseñado para trabajar con bases de datos MySQL. Ofrece tanto una interfaz procedural como orientada a objetos.
- PDO (PHP Data Objects): Es una interfaz más genérica que soporta varios sistemas de bases de datos, incluidos MySQL, PostgreSQL, SQLite, entre otros.
Cada uno tiene sus ventajas y es útil en distintos contextos. Vamos a ver cómo usar ambos y entender sus diferencias.
1. Conexión con MySQL usando mysqli
Conexión Procedural con mysqli
La forma más simple de establecer una conexión con MySQL utilizando mysqli es la forma procedural. La función que utilizamos es mysqli_connect()
.
<?php
// Parámetros de conexión
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'mi_base_de_datos';
// Establecer la conexión
$conn = mysqli_connect($host, $username, $password, $dbname);
// Verificar si la conexión fue exitosa
if (!$conn) {
die("Conexión fallida: " . mysqli_connect_error());
}
echo "Conexión exitosa a la base de datos!";
?>
Explicación del código:
- $host: Dirección del servidor de la base de datos. En local es común usar
'localhost'
. - $username: El nombre de usuario para acceder a la base de datos.
- $password: La contraseña asociada al usuario.
- $dbname: El nombre de la base de datos a la que deseas conectarte.
- mysqli_connect(): Función que establece la conexión con MySQL.
- mysqli_connect_error(): Si la conexión falla, esta función devuelve el mensaje de error.
Conexión Orientada a Objetos con mysqli
La conexión orientada a objetos se realiza creando una instancia de la clase mysqli
.
<?php
// Parámetros de conexión
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'mi_base_de_datos';
// Crear una nueva conexión usando la clase mysqli
$conn = new mysqli($host, $username, $password, $dbname);
// Verificar si la conexión fue exitosa
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
echo "Conexión exitosa a la base de datos!";
?>
Explicación del código:
- Usamos la clase
mysqli
para crear una nueva instancia de la conexión. - $conn->connect_error: Verifica si hay algún error en la conexión.
- Si no hay error, la conexión es exitosa.
2. Conexión con MySQL usando PDO
La conexión con PDO es más flexible, ya que permite trabajar con varias bases de datos, no solo MySQL. El código es ligeramente diferente, pero más modular.
Conexión con PDO:
<?php
// Parámetros de conexión
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'mi_base_de_datos';
try {
// Establecer la conexión usando PDO
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// Establecer el modo de error de PDO
$conn->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();
}
?>
Explicación del código:
- new PDO(): La clase
PDO
es instanciada con los parámetros de conexión. - mysql=$host;dbname=$dbname: Especificamos el controlador (en este caso MySQL) y el host y la base de datos a utilizar.
- setAttribute(): Usamos este método para configurar el modo de manejo de errores. En este caso, configuramos para que las excepciones sean lanzadas si ocurre un error (
PDO::ERRMODE_EXCEPTION
). - try-catch: Utilizamos bloques
try-catch
para manejar posibles errores en la conexión. Si algo sale mal, el bloquecatch
captura la excepción y muestra el mensaje de error.
3. Comparativa entre mysqli y PDO
A continuación, te mostramos las principales diferencias entre mysqli y PDO para ayudarte a elegir el adecuado para tu proyecto.
Característica | mysqli | PDO |
---|---|---|
Tipo de Conexión | Solo para MySQL. | Soporta múltiples bases de datos (MySQL, PostgreSQL, SQLite, etc.). |
Estilo de Programación | Procedural y orientado a objetos. | Solo orientado a objetos. |
Métodos de Conexión | mysqli_connect() , new mysqli() | new PDO() |
Manejo de Errores | Requiere comprobación explícita de errores. | Maneja errores mediante excepciones. |
Consultas Preparadas | Sí, con mysqli_prepare() | Sí, con prepare() |
Soporte de Transacciones | Sí, mediante begin_transaction() . | Sí, mediante beginTransaction() . |
¿Cuál deberías elegir?
- mysqli es una buena opción si solo vas a trabajar con MySQL y prefieres trabajar de manera procedural o usando objetos.
- PDO es ideal si planeas cambiar de base de datos en el futuro o si trabajas con varias bases de datos. Además, su manejo de errores con excepciones lo hace más robusto.
4. Buenas Prácticas para Conexión a la Base de Datos
Independientemente de si eliges mysqli o PDO, es importante seguir buenas prácticas al interactuar con la base de datos:
- Evitar exponer datos sensibles: No pongas tu usuario y contraseña en el código. Usa variables de entorno o archivos de configuración externos.
- Manejo adecuado de errores: Nunca muestres detalles completos de errores de conexión en un entorno de producción. Utiliza excepciones o mensajes de error genéricos.
- Cerrar la conexión: Siempre cierra la conexión con la base de datos una vez que ya no la necesites. Para
mysqli
, usa$conn->close()
(si usas objetos) y paraPDO
, simplemente destruye la instancia con$conn = null;
.
Resumen:
- Usamos mysqli si solo trabajamos con MySQL y preferimos un enfoque orientado a objetos o procedural.
- PDO es más versátil, soporta múltiples bases de datos, y permite trabajar solo con un enfoque orientado a objetos.
- Ambos métodos tienen sus ventajas y la elección depende de tus necesidades específicas y de la flexibilidad que busques en tu proyecto.
¡Ahora que conoces cómo establecer una conexión básica con MySQL en PHP usando mysqli o PDO, ya estás listo para interactuar con bases de datos y realizar consultas en tus aplicaciones!