Cómo conectar PHP con Bases de datos MySQL
Si eres un principiante en el desarrollo de sitios web, puede ser beneficioso saber cómo como conectar PHP a MySQL con un script. De esta manera, podrás modificar, ver o administrar las tablas creadas en la base de datos MySQL. Este artículo te mostrará las formas más fáciles de hacerlo, comencemos.
Tabla de Contenidos
Crear una base de datos MySQL (Opcional)
Este paso es necesario en caso de que aún no tengas una base de datos MySQL creada. Si eres un usuario de Hostinger, puedes crear fácilmente una nueva a través del hPanel de Hostinger en unos pocos pasos:
- Busca el menú Bases de datos MySQL en la sección Bases de datos.
- Completa los campos necesarios y presiona Crear.
Ten en cuenta que al crear una base de datos, esta estará en blanco y deberás completar los datos antes de poder manipularlos.
¡Importante! Toma nota de las credenciales de la base de datos MySQL que acabas de crear para el siguiente paso. ¡No olvides anotar también el nombre de usuario y la contraseña de la base de datos!
Dos formas en que un script PHP puede conectarse a MySQL
Hay dos métodos para conectar con PHP a una base de datos MySQL: MySQLi y PDO.
MySQLi son las siglas de MySQL Improved. Es una extensión exclusiva de MySQL que agrega nuevas funciones a la interfaz de una base de datos MySQL. MySQLi es tanto procedimental como orientada a objetos, siendo el primer atributo heredado de la versión anterior de MySQL.
El MySQL original divide una tarea en procedimientos lineales, paso a paso, lo que dificulta la modificación porque tienes que editar el código desde la parte superior. Mientras tanto, MySQLi ve los datos como un conjunto de objetos intercambiables con funciones, lo que permite a los usuarios agregar o eliminar datos fácilmente.
PDO son las siglas de PHP Data Object. A diferencia de MySQLi, PDO solo está orientado a objetos y admite varios tipos de bases de datos diferentes que usan PHP, como MySQL, MSSQL, Informix y PostgreSQL.
¡Importante! Las funciones originales de mysql_ están en desuso y no deben usarse porque no son seguras y ya no cuentan con mantenimiento ni desarrollo.
Una de las características más importantes que ambos admiten son las declaraciones preparadas, lo que acelera el tiempo necesario para que MySQL ejecute la misma consulta varias veces. También se utiliza para prevenir ataques de inyección de SQL al realizar cambios en la base de datos.
Cualquiera que sea el método que utilices, necesitarás la información correcta para poder conectarte a la base de datos MySQL que has creado. Aquí es donde los detalles de la base de datos MySQL que has guardado previamente son útiles.
También necesitas el nombre de servidor o nombre de host correcto para la configuración. Hostinger usa “localhost” como el nombre de host de su servidor MySQL. En general, este es el nombre que querrás usar si cargaste tu secuencia de comandos PHP en el mismo servidor que la base de datos.
Por el contrario, si te estás conectando a una base de datos desde una ubicación remota (por ejemplo, su computadora), tendrás que usar la dirección IP del servidor MySQL. Para obtener más detalles, comunícate con tu proveedor de alojamiento para que puedan proporcionarte la información correcta sobre qué usar como nombre de host.
Uso de MySQLi para conectar un script PHP a MySQL
Sigue estos pasos para usar MySQLi para conectar un script PHP a MySQL:
- Ve al Administrador de archivos -> public_html.
- Crea un Archivo nuevo haciendo clic en el icono del menú superior.
- Guárdalo como databaseconnect.php. Puedes reemplazar el nombre con lo que quieras, solo asegúrate de estar usando php como extensión.
- Haz doble clic para abrir el archivo y copia y pega las siguientes líneas de código en él. Cambia los primeros cuatro valores debajo de <?php con las credenciales que anotaste anteriormente.
<?php $servername = "localhost"; $database = "databasename"; $username = "username"; $password = "password"; // Create connection $conn = mysqli_connect($servername, $username, $password, $database); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; mysqli_close($conn); ?>
Explicación del código MySQLi
El método principal utilizado en este script es mysqli_connect(). Esta es una función interna de PHP para establecer una nueva conexión a un servidor MySQL.
Al comienzo de nuestro código, vemos pocas declaraciones de variables y valores asignados a esas variables. Por lo general, necesitamos cuatro variables para establecer una conexión adecuada: $servername, $database, $username y $password. En el código, hemos establecido los datos exactos de nuestra base de datos como valores para esas variables, así se pueden pasar a la función.
Si la conexión no es exitosa, se ejecuta la función die(). Esto básicamente termina con el script y arroja el mensaje de error de conexión establecido. De forma predeterminada, el error de conexión de MySQL dirá Connection failed seguido de un mensaje de error exacto que describe el problema.
Por otro lado, si la conexión MySQL es exitosa, el código imprimirá Connected successfully.
La última parte del código es mysqli_close, que simplemente permitirá cerrar la conexión a la base de datos manualmente. Si no se especifica, las conexiones MySQL se cerrarán por sí solas una vez que finalice el script.
Usar PDO para conectar un script PHP a MySQL
El otro método que puedes utilizar para conectar un script PHP a MySQL es PDO. Es similar al método anterior, pero con una ligera variación:
- En public_html, crea un archivo llamado pdoconfig.php e inserta el siguiente código. Como siempre, no olvides reemplazar los valores del marcador de posición con la información de tu base de datos. Guárdalo y ciérralo una vez que hayas terminado.
<?php $host = 'localhost'; $dbname = 'databasename'; $username = 'username'; $password = 'password';
- Crea otro archivo llamado databaseconnect.php en el mismo directorio, pero con el siguiente código. Si nombraste el archivo anterior de manera diferente, asegúrese de cambiar el valor de require_once.
<?php require_once 'pdoconfig.php'; try { $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); echo "Connected to $dbname at $host successfully."; } catch (PDOException $pe) { die("Could not connect to the database $dbname :" . $pe->getMessage()); }
Explicación del código PDO
Una conexión de base de datos PDO requiere que crees un nuevo objeto PDO con un Nombre de origen de datos (DSN – Data Source Name), nombre de usuario y contraseña.
El DSN define el tipo de base de datos, el nombre de la base de datos y cualquier otra información, si es necesario. Estas son las variables y valores que declaramos dentro del archivo dbconfig.php, referenciados una vez por la línea require_once en databaseconnect.php.
En este último, encontrarás el código try…catch… Esto significa que el script intentará (try) conectarse a MySQL utilizando el código proporcionado, pero si hay un problema, se ejecutará el código de la sección de captura (catch). Puedes usar el bloque catch para mostrar mensajes de error de conexión o ejecutar un código alternativo si falla el bloque try.
Si la conexión es exitosa, imprimirá el mensaje “Connected to $dbname at $host successfully“. Sin embargo, si el intento falla, el código de captura mostrará un mensaje de error simple y eliminará el script.
Verificar la conectividad y resolver los errores comunes
Para verificar si la conexión es exitosa, accede a tu dominio así: tudominio/databaseconnect.php. Si nombras el archivo PHP de una forma diferente, asegúrate de cambiar la dirección anterior en consecuencia.
Verás “Connected successfully” o variantes de este mensaje si todo está funcionando sin problemas.
Ahora, si la conexión no fue exitosa, verás algo diferente. Los errores son ligeramente diferentes para MySQLi y PDO.
Error Contraseña Incorrecta
Este error ocurre si cambiamos la contraseña o cualquier credencial en el código PHP (pero no la cambiamos en la base de datos real).
En caso de que veas un mensaje como “Access denied” o “Could not connect to database” acompañado de “(using password: YES)” al final, lo primero que debes hacer es verificar los detalles de la base de datos. Podría haber un error tipográfico o una parte faltante.
No se puede conectar con el servidor MySQL
Si obtienes el mensaje “Can’t connect to MySQL server on ‘server’ (110)” en MySQLi, significa que el script no obtuvo una respuesta de un servidor. Esto sucede cuando configuramos “server” en lugar de “localhost” como $servername, y el nombre no es reconocido.
El mensaje de error en PDO se verá como “Connection failed: SQLSTATE[Hy000] [2002]” seguido de más detalles que indican que no se encontró el host My SQL. Pero la forma de solucionarlo es la misma que la anterior.
Y, por supuesto, siempre es importante recordar una regla de oro para solucionar un error: comprobar el registro de errores de su sitio.
El registro se puede encontrar en la misma carpeta donde se ejecuta el script. Por ejemplo, si estamos ejecutando un script en public_html, encontraremos el registro error_log en la misma carpeta.
Conclusión
En este tutorial, has aprendido los conocimientos básicos sobre cómo conectar un script PHP a una base de datos MySQL usando MySQLi y PHP Data Objects (PDO).
Con suerte, esta guía fue útil para aquellos que recién están comenzando con el desarrollo web. Después de todo, conectarse a una base de datos es el primer paso y el más importante cuando se trabaja con configuraciones y scripts más avanzados.
Haznos saber en los comentarios si tienes algún problema al seguir esta guía.
Comentarios
November 15 2020
Muchisimas gracias por el tutorial, me ha servido mucho en la escuela.
December 27 2020
Excelente, lo voy a aplicar en videoper.com
January 09 2021
Gracias Gustavo.. Consulta, si quisiera conectar siguiendo tus pasos a un servidor que no esta alojado en mi pc esta en linea, también lo podría hacer??
February 09 2021
Hola Jaime! Configurar conexiones remotas a bases de datos es posible, aunque tendrás que prestar atención a otros factores que no están considerados en este tutorial, como el firewall y la configuración del servidor de destino. Saludos!
January 24 2021
Cordial saludo, a mi me sale el siguiente error: Connection failed: Access denied for user 'admin'@'localhost' (using password: YES) Si alguien me puede Ayudar, mil gracias.
February 09 2021
Hola! Te sugiero revisar si estás usando la contraseña y el usuario correctos para acceder a la base de datos. Saludos!
March 19 2021
Si la base de datos esta en un vps que valor se le da a $host?
March 23 2021
Hola Juan Carlos! Si el VPS es remoto, deberías utilizar su dirección IP. Saludos!
August 10 2021
Tenia el mismo problema que Libardo: "a mi me sale el siguiente error: Connection failed: Access denied for user 'admin'@'localhost' (using password: YES)". Tres horas y nada. Pero le agregué una serie de letras y números al usuario y la base de datos. Estos son los que se agregan por default a la hora de crear la base de datos. El servidor queda como localhost. Es decir, no se pone solo el nombre que nosotros asignamos. Queda algo así como u123456789_nombre
October 21 2021
Gracias.!! Muy buena explicación.!
June 22 2022
Gracias Gustavo, no sabía como hacer la conexión de php a la base de datos con el método orientado a objetos (PDO), estoy de suerte por haber encontrado tu tutorial. Muchas gracias por compartir el conocimiento con los que estamos comenzando a programar.