Guía para conectar PHP a una base de datos con PDO

21/03/2020 | MySQL, PHP | 0 comentarios

Entiende los conceptos básicos para conectar PHP con base de datos utilizando PDO de manera sencilla y rápida.

Descargar archivos Ver ejemplo


Una de las tareas mas comunes en el desarrollo de aplicaciones web es interactuar con bases de datos. PHP ofrece multiples métodos de conexión que dependen del tipo de base de datos (SQL Server, MySQL, PostgreSQL, Oracle, etc).

Para propósitos didácticos utilizaremos como base de datos MySQL (Por que es gratuita y viene pre-instalada la mayoría de servidores) pero el mismo proceso y recomendaciones se pueden utilizar para otras bases de datos.

PDO

PHP data objects es un conjunto de clases que permite interactuar con diferentes bases de datos utilizando una misma interfaz, además tiene como ventaja que puede tratar los datos como objetos lo que lo hace sencillo y entendible para trabajar.

Si bien existe la extensión mysqli, esta sólo funciona con MySQL, mientras que PDO puede funcionar con otras bases de datos, por ello vamos a trabajar con PDO.

Conexión con PDO

El primer paso para interactuar con bases de datos es la conexión, para ello utilizaremos la clase PDO que tiene los siguientes parámetros:

$pdo = new PDO($dsn, $username, $password, $options);

Donde se tiene:

  • $dsn: (data source name) cadena de texto que especifica la fuente de datos.
  • $username: nombre de usuario de la base de datos.
  • $password: clave de usuario de la base de datos.
  • $options: array con parámetros adicionales para la conexión.

Para el caso del DSN tiene la siguiente estructura:

$dsn = 'mysql:host=DBHOST;port=DBPORT;dbname=DBNAME';

En donde:

  • mysql especifica el driver de base de datos a utilizar, en este caso MySQL.
  • DBHOST: define el Hostname o IP del servidor de base de datos.
  • DBPORT: el puerto para la conexión, en MySQL el puerto por defecto es 3306.
  • DBNAME: especifica el nombre de la base de datos a utilizar.

Con esta información vamos a crear nuestra primera conexión a base de datos:


<?php
// parameters
$dsn = 'mysql:host=localhost;port=3306;dbname=dbname';
$username = 'dbuser';
$password = 'password';
$options = [];

$pdo = new PDO($dsn, $username, $password, $options);

Probando la conexión

Entonces ya podemos hacer una consulta de prueba, para ello usaremos una base de datos de ejemplo que tenga una tabla llamada country con los datos básicos de los países.


<?php
// ...

// prepare query
$statement = $pdo->prepare("SELECT * FROM country");
$statement->execute();

// print results
while ($result = $statement->fetch()) {
    echo $result['name'] . '
'; }

Notar que los datos se devuelven como un array, por ello se utiliza $result['name'].

Mejorando la Conexión

Ahora que ya sabemos como usar la conexión con PDO, haremos algunas mejoras:

  • Crear un archivo pdo.php que contenga la conexión, que podremos reutilizar.
  • Establecer la codificación de caracteres en UTF8 para evitar problemas con tildes.
  • Establecer que PDO devuelva los datos como objetos en lugar de arrays.
  • Capturar las excepciones para detectar error de PDO.

<?php
// parameters
$dsn = 'mysql:host=localhost;port=3306;dbname=dbname';
$username = 'dbuser';
$password = 'password';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'",
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
);

try {
    $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
    echo $e->getMessage();
    die();
}

Como se puede ver estamos utilizando dos parámetros en las opciones:

  • PDO::MYSQL_ATTR_INIT_COMMAND especificar un comando inicial para la conexión.
  • PDO::ATTR_DEFAULT_FETCH_MODE establecer el formato en que se devuelven los datos.

Probando la conexión

Entonces incluimos el archivo de conexión y realizamos nuevamente la consulta:


<?php
// include connection
require 'pdo.php';

// prepare query
$statement = $pdo->prepare("SELECT * FROM country");
$statement->execute();

// print results
while ($result = $statement->fetch()) {
    echo $result->name . '
'; }

Notar que los datos se devuelven como un array, por ello se utiliza $result->name.

Recomendaciones

Se recomienda el uso de PDO para la conexión a base datos, por que con una misma interfaz se puede conectar a diferentes bases de datos.

Se recomienda crear un archivo para conexión a base de datos, de forma tal que si cambian los parámetros de conexión entonces sólo es necesario editar el archivo de conexión.

Es recomendable el uso de las opciones de configuración para establecer opciones globales en el acceso a base de datos.

Referencias

Envíar Comentario

En este sitio los comentarios se publican previa aprobación del equipo de Kodetop. Evita los comentarios ofensivos, obscenos o publicitarios. Si deseas publicar código fuente puedes hacerlo entre las etiquedas <pre></pre>