Crear una conexión entre PHP y MySQL
Aprende a establecer una conexión entre PHP y MySQL para crear aplicaciones web dinámicas y manipular datos de forma segura.
Establecer una conexión entre PHP y MySQL es esencial para crear aplicaciones web dinámicas. Con esta conexión, puedes acceder y manipular datos almacenados en una base de datos MySQL a través de scripts PHP. Este artículo te explica todas las formas de conectarse, cuándo usar cada una y las prácticas de seguridad que mantienen tu aplicación protegida.
Esta página cubre:
- Las tres APIs de conexión que ofrece PHP y cuál elegir
- Cómo conectarse con el estilo procedimental de
mysqliy verificar errores - El estilo orientado a objetos de
mysqliy el estilo moderno de PDO - Seleccionar una base de datos, ejecutar una primera consulta y cerrar la conexión
- Errores comunes: juegos de caracteres, reportes de errores y manejo de credenciales
Prerrequisitos
Antes de comenzar a crear la conexión, es importante asegurarse de contar con los siguientes prerrequisitos:
- Un servidor web con PHP instalado (como Apache o Nginx)
- Una base de datos MySQL
- La extensión PHP MySQL (incluida en la mayoría de las instalaciones de PHP)
Entender la conexión entre PHP y MySQL
Una conexión entre PHP y MySQL implica dos componentes principales: PHP y una base de datos MySQL. PHP es un lenguaje de scripting del lado del servidor usado para crear páginas web dinámicas, mientras que una base de datos MySQL se utiliza para almacenar y recuperar datos.
PHP ofrece tres formas de comunicarse con MySQL. Conocer la diferencia desde el principio te ahorra tener que reescribir código más adelante:
| API | Estilo | Sentencias preparadas | Funciona con otras bases de datos |
|---|---|---|---|
mysqli (procedimental) | Llamadas a funciones como mysqli_connect() | Sí | Solo MySQL/MariaDB |
mysqli (orientado a objetos) | Métodos en un objeto mysqli | Sí | Solo MySQL/MariaDB |
| PDO | Métodos en un objeto PDO | Sí | Muchas bases de datos (una sola API) |
Las antiguas funciones mysql_* (sin la i) fueron eliminadas en PHP 7 — nunca las uses. Para proyectos nuevos, prefiere PDO o mysqli orientado a objetos porque admiten sentencias preparadas de forma limpia, que son tu principal defensa contra la inyección SQL. Esta página muestra las tres para que puedas leer y mantener cualquier base de código. Para un análisis más profundo de la extensión mysqli, consulta PHP MySQLi.
Establecer una conexión
Para establecer una conexión entre PHP y MySQL, necesitarás usar la función mysqli_connect(). Esta función acepta varios parámetros, incluyendo el nombre del servidor, el nombre de usuario y la contraseña.
A continuación se muestra un ejemplo de cómo usar la función mysqli_connect():
Ejemplo PHP de cómo usar la función mysqli_connect
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>En el ejemplo anterior, $server se establece en localhost, que es la ubicación predeterminada del servidor MySQL. $username y $password deben establecerse con el nombre de usuario y la contraseña utilizados para acceder a la base de datos.
Después de establecer la conexión, usamos la función mysqli_connect_error() para verificar si la conexión fue exitosa. Si la conexión falla, el script muestra un mensaje de error y termina la conexión. Si la conexión es exitosa, el script muestra "Connected successfully".
Consejo: También puedes pasar el nombre de la base de datos como cuarto parámetro en
mysqli_connect()para simplificar la lógica de conexión y omitir un paso separado de selección de base de datos:$conn = mysqli_connect($server, $username, $password, "your_database");
mysqli orientado a objetos
La misma conexión en el estilo orientado a objetos crea un objeto mysqli con new. Muchos desarrolladores lo encuentran más limpio porque la conexión y sus métodos residen en un solo objeto:
<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>Conectarse con PDO
PDO (PHP Data Objects) te ofrece una API consistente para muchas bases de datos. Los detalles de la conexión van en una cadena DSN (Data Source Name):
<?php
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";
try {
$pdo = new PDO($dsn, "your_username", "your_password");
// Make PDO throw exceptions on error instead of failing silently
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
?>Establece el juego de caracteres. Especifica siempre
charset=utf8mb4(PDO) o llama a$conn->set_charset("utf8mb4")(mysqli). Sin esto, los caracteres multibyte y los emojis pueden almacenarse o devolverse de forma incorrecta.
Seleccionar una base de datos
Una vez que hayas establecido una conexión con el servidor MySQL, necesitarás seleccionar una base de datos con la que trabajar. Puedes hacerlo usando la función mysqli_select_db().
A continuación se muestra un ejemplo de cómo usar la función mysqli_select_db():
Ejemplo PHP de cómo usar la función mysqli_select_db
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Select database
$select_db = mysqli_select_db($conn, $db);
// Check database selection
if (!$select_db) {
die("Error selecting database: " . mysqli_error($conn));
}
echo "Database selected successfully";
?>En el ejemplo anterior, $db se establece con el nombre de la base de datos que deseas seleccionar. Después de establecer la conexión, usamos la función mysqli_select_db() para seleccionar la base de datos. La función acepta dos parámetros: la conexión y el nombre de la base de datos.
Luego usamos la función mysqli_error() para verificar si la base de datos fue seleccionada correctamente. Si la selección falla, el script muestra un mensaje de error y termina la conexión. Si la selección es exitosa, el script muestra "Database selected successfully".
Ejecutar tu primera consulta
Una conexión solo es útil una vez que ejecutas una consulta. El ejemplo a continuación selecciona filas de una tabla users y recorre los resultados. Como el valor proviene de una variable, usa una sentencia preparada para que la entrada del usuario no pueda inyectarse en el SQL:
<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Prepare a parameterized query
$stmt = $conn->prepare("SELECT id, name FROM users WHERE id > ?");
$stmt->bind_param("i", $minId); // "i" = integer parameter
$minId = 0;
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row["id"] . ": " . $row["name"] . "\n";
}
$stmt->close();
$conn->close();
?>Nunca construyas consultas concatenando datos de entrada del usuario directamente en la cadena SQL — eso abre la puerta a la inyección SQL. Para profundizar en la vinculación de parámetros, consulta MySQL Prepared Statements. Para el conjunto completo de operaciones CRUD, consulta Insert Data y Select Data.
Cerrar la conexión
Cuando termines de trabajar con una base de datos MySQL, es importante cerrar la conexión. Esto ayuda a liberar recursos y evitar posibles problemas de seguridad.
Para cerrar la conexión, puedes usar la función mysqli_close(). A continuación se muestra un ejemplo de cómo usar la función mysqli_close():
Ejemplo PHP de cómo usar la función mysqli_close
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Select database
$select_db = mysqli_select_db($conn, $db);
// Check database selection
if (!$select_db) {
die("Error selecting database: " . mysqli_error($conn));
}
// Close connection
mysqli_close($conn);
echo "Connection closed";
?>En el ejemplo anterior, usamos la función mysqli_close() para cerrar la conexión. La función acepta un parámetro: la conexión. El script luego muestra "Connection closed" para confirmar que la conexión ha sido cerrada.
Nota de seguridad: En entornos de producción, evita codificar las credenciales de forma fija. Usa variables de entorno o archivos de configuración para almacenar datos sensibles.
Conclusión
En este artículo, cubrimos los prerrequisitos, las tres APIs de conexión (mysqli procedimental, mysqli orientado a objetos y PDO), cómo establecer una conexión, seleccionar una base de datos, ejecutar una consulta parametrizada segura y cerrar la conexión. Ahora deberías poder conectar PHP a MySQL y comenzar a realizar operaciones CRUD.
Para aplicaciones PHP modernas, prefiere PDO o la interfaz mysqli orientada a objetos con sentencias preparadas: ofrecen mejor seguridad y un manejo de errores más claro. Desde aquí, continúa con Create a MySQL Database, Create a Table y la descripción general de MySQL Database.