Mi Blog
👉 Cómo conectar PHP con una base de datos MySQL

Cómo conectar PHP con una base de datos MySQL

 
(11 votos)

A la hora de crear una aplicación web PHP, es casi indispensable conectarlo con una base de datos en la cual guardar información y desde la cual recoger información. En este ejemplo aprenderemos cómo conectar PHP una base de datos MySQL/MariaDB utilizando los 2 paradigmas disponibles: procedimental y programación orientada a objetos.

Seguid leyendo y os enseñaré lo sencillísimo que es conectar PHP a una base de datos de tipo MySQL/MariaDB...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES MYSQL?

MySQL es un sistema de administración de bases de datos SGBD ó DBMS en inglés (Database Management System) para bases de datos relacionales.

Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza multitud de tablas para almacenar y organizar la información. MySQL está desarrollado en C y C++ y uno de sus puntos principales es su gran adaptación a diferentes entornos de desarrollo. MySQL permite utilizar diversos lenguajes de programación cómo  PHP, Perl y Java y se integra perfectamente con casi la totalidad de sistemas operativos.

Otro punto a favor es que es Open Source. Hace tiempo MySQL fue comprado por Oracle y la comunidad sacó un fork llamado MariaDB que implementa algunas mejoras con respecto al MySQL original. Actualmente todas las distribuciones de GNU/Linux han migrado de MySQL a MariaDB.

Conectar PHP con MySQL

 

 

Conectar PHP con MySQL es muy sencillo con MYSQLi y PDO

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Servidor MySQL/MariaDB
  • PHP instalado
  • Editor textos (cualquiera, aunque un IDE es altamente recomendable)
  • Conexión a Internet (recomendable pero no obligatorio)

 

 

2.- DIFERENTES MÉTODOS DE CONEXIÓN

Existen dos métodos diferentes para conectar desde PHP a una base de datos MySQL: MySQLi y PDO.

MySQLi es una extensión de MySQL que agrega ciertas funciones a la interfaz de conexión con una base de datos MySQL. Las siglas se corresponden con MySQL Improved (MySQL Mejorado). MySQLi soporta tanto el paradigma procedimental como el paradigma de la programación orientada a objetos. El paradigma procedimental se hereda de la antigua extensión (y que no debemos usar) mysql.

En las primeras versiones de MySQL, se dividen las tareas en procedimientos lineales, lo que dificulta la modificación porque se tiene que editar el código desde la parte superior. Sin embargo, en la nueva versión mejorada de MySQLi, se ven los datos como un conjunto de objetos, lo que nos permite agregar o eliminar datos de una forma sumamente sencilla.

PDO son las siglas de PHP Data Object y está orientado exclusivamente al paradigma de la programación orientada a objetos. Una de las grandes ventajas es que admite diferentes tipos de bases de datos que se usan en PHP, como MySQL, MariaDB, PostgreSQL, MSSQL, Informix etc...

Uno de los puntos más importantes que soporta PDO son las declaraciones preparadas. Utilizando estas declaraciones, se aceleran las consultas de MySQL y se previenen ataques de inyección de SQL.

 

 

3.- CONECTAR PHP CON MYSQL USANDO MYSQLi

PHP incorpora una función interna que posibilita la conexión a un servidor MySQL. El método utilizado para conectar a la base de datos es mysqli_connect().

Para simplificar el código y hacerlo un poco mas "friendly", lo normal es crear unas variables que serán pasadas posteriormente como parámetros al método mysqli_connect(). Los cuatro parámetros necesarios que tenemos que pasar  la función son: $servername (dirección del servidor), $database (base de datos), $username (usuario) y $password (contraseña).

Cuando se realiza la conexión la base de datos, si no es correcta, se ejecuta la función die(). Lo que hace esta función es detener la ejecución por completo y mostrar un mensaje de error y/o advertencia seguido de un mensaje del error exacto que describe el problema.

Si la conexión se realiza de forma correcta, se mostrará un mensaje de "Conexión satisfactoria".

Por último, se cerrará la conexión con la base de datos utilizando la función mysql_close(), a la cual le pasaremos como variable la conexión creada previamente. Si no especificamos el cierre de la conexión, MySQL cerrará por sí solo la conexión una vez que finalice el script.

En el siguiente script se incluyen todos los pasos detallados anteriormente. Tan solo debemos guardarlo en un fichero php y ejecutarlo bien desde un navegador o desde consola.

<? php
$servername = "servername"; // Nombre/IP del servidor
$database = "databasename"; // Nombre de la BBDD
$username = "username"; // Nombre del usuario
$password = "password"; // Contraseña del usuario
// Creamos la conexión
$con = mysqli_connect($servername, $username, $password, $database);
// Comprobamos la conexión
if (!$con) {
die("La conexión ha fallado: " . mysqli_connect_error());
}
echo "Conexión satisfactoria";
mysqli_close($con);
?>

 

 

Conexión correcta

Si la conexión a la base de datos se hace de forma correcta, obtendremos un mensaje similar al siguiente:

$ php db.php
Conexión satisfactoria

 

 

Conexión Fallida

Si por algún motivo, la conexión falla, obtendremos un mensaje similar al siguiente:

$ php db.php
PHP Warning: mysqli_connect(): (HY000/1045): Access denied for user 'username'@'localhost' (using password: YES) in /var/www/tutorial/db.php
on line 7
PHP Stack trace:
PHP 1. {main}() /var/www/tutorial/db.php:0
PHP 2. mysqli_connect() /var/www/tutoria/db.php:7
Connectión failed: Access denied for user 'username'@'localhost' (using password: YES)

 

 

 

4.- CONECTAR PHP CON MYSQL USANDO PDO

Cuando creamos una conexión a una base de datos MySQL utilizando PDO, necesitamos crear un nuevo objeto PDO con un: (DSN – Data Source Name), nombre de usuario y contraseña.

Deberemos definir un DSN que es el tipo de base de datos, un $host (nombre o ip del servidor), un $dbname (nombre de la base de datos), un $username (nombre de usuario) y un $password (contraseña). Estas variables las declararemos antes de realizar la conexión.

En este ejemplo, utilizaremos un try/catch que básicamente significa que ejecutará lo que hay dentro del "try" y si hay un error ejecutará la parte del "catch". Si la conexión es correcta, se mostrará el mensaje "Conexión satisfactoria". Si la conexión resulta fallida, se mostrará un mensaje de error y se detendrá la ejecución.

<? php
try {
$host = "hostname";
$dbname = "databasename";
$username = "username";
$password = "password";
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
echo "Conexión satisfactoria";
} catch (PDOException $e) {
die("No se pudo conectar con databasename :" . $e->getMessage());
}
?>

 

 

Conexión correcta

Si la conexión a la base de datos se hace de forma correcta, obtendremos un mensaje similar al siguiente:

$ php db.php
Conexión satisfactoria

 

 

Conexión Fallida

Si por algún motivo, la conexión falla, obtendremos un mensaje similar al siguiente:

$ php db.php
No se pudo conectar con databasename :SQLSTATE[HY000] [1045] Access denied for user 'username'@'localhost' (using password: YES)

 

 

ENJOY!