Luego de nuestro primer capítulo, continuamos con este útil Curso de PHP, donde estaremos llevando a cabo una de las partes más importantes y obligatorias que en todo proyecto web debemos implementar, y consiste en establecer la conexión de nuestra aplicación PHP con una base de datos creada en MySQL en este caso.
"¿Cómo conectar PHP con bases de datos? (PDO)" |
Es muy importante tener en cuenta, que una de las formas más implementada para realizar la conexión de un aplicativo PHP con bases de datos es empleando la Clase mysqli; sin embargo, en esta oportunidad haremos nuestra conexión haciendo uso de la Clase PDO, la cual le brinda a nuestro software una característica muy importante denominada "escalabilidad", lo que en otras palabras significa que podremos conectarnos no sólo a bases de datos hechas y/o alojadas en MySQL (como lo hace mysqli) sino en cualquier otro tipo de motor de Bases de datos, conllevando así a que nuestro pequeño proyecto se convierta en todo un sistema de alto alcance y funcionalidad.
Pasos para conectar PHP con Bases de datos, usando PDO.
1. Debemos tener creado nuestro proyecto PHP, y dentro de este estableceremos 4 carpetas (Ver cómo crear un proyecto PHP y sus carpetas) con los siguientes nombres: config, controller, model, view.
Esto con el fin de ir estableciendo el patrón de arquitectura de software: MVC (Modelo - Vista - Controlador).
"MVC (Modelo - Vista - Controlador)" |
2. Procederemos a crear un archivo PHP, para ello seleccionaremos la carpeta "config", damos clic derecho y en las opciones que nos saldrán escogeremos "New" (Nuevo), y por último "PHP File" (Archivo PHP):
"Config - New - PHP File" |
3. Le daremos un nombre a nuestro archivo, en este caso lo llamaremos "configuration", y pulsamos el botón "Finish" (Terminar):
"New PHP File" |
4. Una vez quede creado nuestro archivo, pegaremos el siguiente código dentro de las etiquetas de apertura "<?php" y de cierre "?>" de PHP:
<?php //Acceso Base de Datos define('HOST_NAME', 'localhost'); define('DATABASE_NAME', 'paises'); define('USER', 'root'); define('PASSWORD', '123'); define('CHARSET', 'utf8'); ?>
EXPLICACIÓN DEL CÓDIGO:
En estas líneas de código, lo que estamos haciendo es declarar una serie de constantes en las cuales almacenamos valores que vamos a usar para configurar la conexión con la base de datos.
Para ello, hacemos uso de la función predefinida "define()", a la cual se le deben pasar 2 parámetros entre comillas simples ('); el primero, es el nombre de la constante; y el segundo, es el valor que esta almacenará.
La primera constante:
define('HOST_NAME', 'localhost');La hemos llamado 'HOST_NAME', y le hemos asignado el nombre del servidor en la cual está alojada la base de datos, en este caso 'localhost'.
La segunda constante:
define('DATABASE_NAME', 'paises');La hemos llamado 'DATABASE_NAME', y le hemos asignado el nombre de la base de datos a la cual nos vamos a conectar, en este caso 'paises'.
La tercera constante:
define('USER', 'root');La hemos llamado 'USER', y le hemos asignado el nombre del usuario que puede conectarse al servidor de base de datos (previamente configurado en la instalación del motor de base de datos), en este caso 'root'.
La cuarta constante:
define('PASSWORD', '123');La hemos llamado 'PASSWORD', y le hemos asignado la clave del usuario que puede conectarse al servidor de base de datos (previamente configurada en la instalación del motor de base de datos), en este caso '123'.
La quinta constante:
define('CHARSET', 'utf8');La hemos llamado 'CHARSET', y le hemos asignado la codificación del juego de caracteres, que nos permitirá trabajar de forma adecuada con símbolos especiales, letras acentuadas, etc., en este caso 'utf8'.
5. Lo siguiente que haremos será crear un archivo PHP dentro de la carpeta "model", a dicho archivo le pondremos como nombre "Conectar_Database". Para esto debes seguir los mismos pasos que describimos en los puntos 2 y 3 del presente tutorial.
En este archivo, pegaremos el siguiente código entre las etiquetas de apertura "<?php" y de cierre "?>" de PHP:
En este archivo, pegaremos el siguiente código entre las etiquetas de apertura "<?php" y de cierre "?>" de PHP:
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/ProyectoPhp/config/configuration.php';
class Conectar_Database{
private $hostname = HOST_NAME;
private $database = DATABASE_NAME;
private $user = USER;
private $password = PASSWORD;
private $charset = CHARSET;
private $conexion;
function getconection() {
try {
$opciones = array(
PDO::ATTR_PERSISTENT=>true,
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION
);
$this->conexion=new PDO('mysql:host='.$this->hostname.';dbname='.$this->database,
$this->user, $this->password, $opciones);
$this->conexion->exec('SET NAMES '.$this->charset.'');
echo 'Conexión Exitosa';
} catch (PDOException $error) {
echo "¡ERROR: !".$error->getMessage();
die();
}
return $this->conexion;
}
}
?>
EXPLICACIÓN DEL CÓDIGO:
Todo este código conlleva a la creación de una Clase, en la cual implementamos un método para establecer la conexión con una base de datos.
Veamos entonces de una forma un poco más detallada, las partes de este código:
El código resaltado de color amarillo:
Aquí hacemos uso de la sentencia "require_once" que nos va a permitir incluir y hacer uso de un archivo externo; seguidamente, empleamos la variable "$_SERVER" que es un array que almacena información del servidor donde se está ejecutando nuestra aplicación PHP, a dicho array le pasamos un índice en este caso 'DOCUMENT_ROOT', a través del cual estaremos solicitando el directorio raíz de documentos del servidor. A continuación, usamos un punto ( . ) para concatenar, y entre comillas simples ( ' ) escribiremos la ruta (partiendo de la carpeta del proyecto) en donde se encuentra el archivo requerido, que será "configuration.php".
El código resaltado de color rosado:
Declaramos la Clase haciendo uso de la palabra especial "class", seguido del nombre de la Clase que en este caso será "Conectar_Database", y terminamos con la implementación de las llaves de apertura ( { ) y cierre ( } ) de la Clase.
El código resaltado de color verde:
Declaramos e inicializamos una serie de variables con el tipo de visibilidad "private", y a cada variable se le asignará una constante del archivo "configuration.php", a excepción de la variable "$conexion".
El código resaltado de color azul:
Creamos la función que nos permitirá establecer y administrar la conexión con la base de datos; para ello, hacemos uso de la palabra clave "function", seguida del nombre que le asignamos a esta función que en esta oportunidad es "getconection", los paréntesis () sin parámetros en esta oportunidad, y las llaves de apertura ( { ) y cierre ( } ) de la función.
El código resaltado de color lila:
Consiste en un bloque "try{}", en el cual se establecen una serie de instrucciones:
La primera instrucción, es la definición de una variable tipo array llamada "$opciones" en la cual establecemos un par de atributos de nuestra conexión, como lo es de que se acepten conexiones persistentes (PDO::ATTR_PERSISTENT=>true), y que cuando se produzcan errores se lancen excepciones (PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION) para posteriormente capturarlas y manejarlas.
La segunda instrucción, es el uso de la variable $conexion, a la cual se le asigna una instancia de un objeto de la Clase PDO. A dicha instancia se le deben pasar 4 parámetros como son:
dsn: EL Nombre del Origen de Datos (DSN), contiene la información requerida para conectarse a la base de datos.
En esta oportunidad nuestro parámetro dns es:
'mysql:host='.$this->hostname.';dbname='.$this->database
- username: El nombre de usuario para el string del DSN. Este parámetro es opcional para algunos controladores de PDO.
Nuestro parámetro username es:
$this->user
- password: La contraseña para el string del DSN. Este parámetro es opcional para algunos controladores de PDO.
Nuestro parámetro password es:
$this->password
- options: Un array de la forma clave=>valor con opciones de conexión específicas del controlador.
Nuestro parámetro options es:
$opciones
La tercera instrucción, nos ayuda a establecer el tipo de codificación que usaremos en nuestra conexión, y para ello hacemos uso de la variable "$conexion", aplicándole el método "exec()" al cual se le pasa como parámetro la sentencia que nos permitirá asignar el método de codificación; es decir, "SET NAMES " concatenándole la variable "$charset" que guarda dicha información.
La cuarta y última instrucción del "try{}", consiste en imprimir en el navegador web, el mensaje de "Conexión Exitosa", usando para ello la palabra reservada "echo".
El código resaltado de color azul verdoso:
Se basa en un bloque "catch(){}", y cada instrucción de código que este contiene se ejecutará siempre y cuando se produzca un error en alguna de las líneas de código ubicadas dentro del bloque "try{}"; por lo cual, se le asigna un parámetro consistente en un tipo de excepción en este caso "PDOException" y a su vez una variable que capturará dicha excepción, a la cual llamaremos "$error".
Las instrucciones contenidas dentro del "catch(){}" en este caso son dos; la primera, que consiste en imprimir en el navegador web, la excepción y/o error que se ha producido al intentar conectarnos con la base de datos, y para ello se hace uso de la palabra reservada "echo", y a la variable "$error" se le aplica el método ".getMessage()" para que de esta manera podamos obtener el mensaje de error en forma de String; la segunda, es sencillamente el uso de la función "die()" para detener la ejecución del script actual.
El código resaltado de color naranja:
Tiene la función específica de retornar y/o devolver el valor obtenido en la variable "$conexion"; por lo cual, se implementa la utilización de la sentencia "return".
6. A continuación, vamos a realizar la prueba de conexión con nuestra base de datos; para ello, nos dirigimos al archivo "Index" de nuestro proyecto, el cual contiene el siguiente código:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
En este archivo, entre las etiquetas "<body> </body>" colocaremos las etiquetas de apertura "<?php" y de cierre "?>" de PHP, y pegaremos el siguiente código:
<?php
require_once 'model/Conectar_Database.php';
$conectar = new Conectar_Database();
$conectar->getconection();
?>
EXPLICACIÓN DEL CÓDIGO:En este fragmento de código, tal como lo mencionábamos anteriormente, vamos a realizar la verificación de que sí podemos conectar nuestra aplicación PHP con una base de datos MySQL (en este caso).
Las partes de este código son:
El código resaltado de color gris:
Incluimos en nuestro archivo "Index", otro archivo externo, que en este caso se tratará de "Conectar_Database.php" donde hemos creado la Clase que contiene las sentencias para realizar la conexión; por lo cual, se hace uso de "require_once"; seguidamente, entre comillas simples ( ' ) establecemos la ruta del archivo respectivo.
El código resaltado de color verde:
Se trata de la creación de una variable llamada "$conectar", a la cual le asignamos una instancia de un objeto de la Clase "Conectar_Database".
A continuación, procedemos a usar el objeto "$conectar" para tener acceso a la función ".getconection()".
7. Por último, si hemos implementado el código de forma correcta, al ejecutar nuestro proyecto, obtendremos el mensaje de "Conexión Exitosa" en nuestro navegador web:
"Conexión Exitosa" |
Si deseas descargar completamente gratis, los archivos fuentes de este proyecto: "Index.php", "configuration.php", y "Conectar_Database.php", puedes dirigirte a nuestra página de Recursos Web en la sección "Curso PHP/MVC".
¿Aprendiste a conectar PHP con bases de datos usando la Clase PDO?
¿Tienes alguna sugerencia que hacernos?
Te invitamos a descubrir y compartir en tus redes sociales, todo el contenido de nuestra web referente al Curso de PHP.
También te podría interesar seguir nuestro Curso de MySQL dando ¡CLIC AQUÍ!.
También te podría interesar seguir nuestro Curso de MySQL dando ¡CLIC AQUÍ!.
Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos y en tus redes sociales.
Si tienes dudas o sugerencias al respecto; abajo puedes dejarnos tus comentarios.
Bendiciones...
excelente
ResponderBorrarHola hermano,desde España un saludo y bendiciones por tu pagina.
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarMuchas gracias por el tiempo dedicado, excelente trabajo
ResponderBorrar