Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Cómo conectar base de datos y listar resultados con PHP

Vicente Herrera
Cómo conectar base de datos y listar resultados con PHP
El reproductor de video será cargado en breves instantes.

Utilizar PHP para conectar con una base de datos nos permite tener un almacenamiento seguro en el que centralizar la información que nuestro código empleará para componer lo que se debe visualizar en la web en diversas circunstancias.

Para ello podemos utilizar una serie de diferentes extensiones php:

  • mysql : Ya obsoleta.
  • mysqli : Una versión más moderna de la librería de conexión con mysql.
  • pdo : Librería genérica que permite conectar con muchos motores de bases de datos.

Utilizaremos la última, ya que conocer su funcionamiento nos servirá con otros motores de bases de datos que no sean MySQL.

Esta librería tiene un planteamiento orientado a objetos, donde deberemos crear objetos con new, e invocar ciertos métodos en ellos (funciones del objeto), especificándolos con “->”. El tratamiento de errores puede ser según el valor que devuelvan las llamadas a los métodos (como hacen gran parte de las funciones al devolver falso en caso de error), o mediante excepciones.

Veamos el siguiente código de ejemplo:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"></head><body>
<?php
echo '<h1>Ejemplo MySQL</h1>';
// Conectamos con la base de datos

$db = new PDO('mysql:host=localhost;dbname=dbtest;charset=utf8', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

try {
	$stmt = $db->prepare("SELECT * FROM articulos WHERE pais=:mycountry");
	$stmt->execute( array(':mycountry' => 'USA') );
	$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $ex) {
    echo "Ocurrió un error<br>";
    echo $ex->getMessage();
    exit;
}

echo '<ul>';
foreach ($rows as $row) {
	echo '<li>'.$row['id'].' : ('.$row['pais'].') '.$row['titulo'].'</li>';
}
echo '</ul>';

?>
</body></html>

En primer lugar, creamos un objeto $db con la información de conexión a base de datos, el usuario (root) y la contraseña (en blanco en este caso). A continuación, mediante los métodos setAttribute() establecemos que el manejo de errores será mediante excepciones, y que no debe emular instrucciones prepare automáticamente.

Los errores por excepciones, en lugar de utilizar un valor de devolución en las llamadas, se emplean de manera diferente. Si una o varias líneas de código se ejecutan sin problemas, no pasa nada y se devuelve lo que normalmente se tenga que devolver. Pero si entre esas líneas de código, o dentro de las funciones o métodos a invocar, ocurre un error, se dispara lo que se llama una excepción . Si no se hace nada más, al dispararse se detiene inmediatamente el código, mostrando el mensaje de error del sistema asociado a esa excepción.

Las excepciones pueden ser manejadas, si utilizamos una instrucción try-catch como en el ejemplo, todo el código dentro del bloque try estará supervisado por si ocurre algún error. Si se ejecuta sin problemas, se salta la parte catch y continua la ejecución. Pero si alguna de las instrucciones dentro de try genera una excepción, se detiene la ejecución de ese bloque inmediatamente, y se pasa el control al bloque catch, pasando por parámetro el objeto excepción generado, que tendrá en su interior información del mensaje de error, línea de código donde ocurrió, etc.

En cualquier caso, no es obligatorio utilizar siempre bloques try-catch , pudiendo dejar que las excepciones detengan por si solas la ejecución. Solamente cuando queremos nosotros capturar el error, para mostrar un mensaje distinto, ocultarlo totalmente, o procesarlo de alguna manera.

En nuestro caso, lo utilizamos para crear primero con $db->prepare un objeto stmt , que contiene la preparación de la sentencia SQL que comienza con “SELECT” , que accederá a una tabla artículos para obtener todas las filas cuyo valor de columna country coincida con una asignación predeterminada. A continuación, realizamos la asignación del parámetro mycountry con el valor específico USA para que ese sea el país filtrado, y mediante fetchAll obtenemos de golpe todos los registros en un array, que al especificar PDO::FETCH_ASSOC será asociativo respecto a los índices de las filas y las claves primarias.

De esta forma, con un simple foreach al haber obtenido todos los elementos, podemos mostrarlos como en el ejemplo en una lista no ordenada.

Este es un ejemplo inicial de uso de base de datos, veremos en otro artículo de forma ampliada como insertar elementos, eliminarlos o buscar entre los diferentes registros.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

12 Características y ventajas de PHP

12 Características y ventajas de PHP

Lenguajes de programación

02 de Enero de 2019

Si estás pensando en aprender PHP y quieres saber más para tener una opinión sólida, te contamos las características y venatajas que tiene PHP como lenguaje de programación.

Aprende PHP desde Cero

Aprende PHP desde Cero

Lenguajes de programación

21 de Septiembre de 2015

Este próximo jueves 24 de Septiembre comenzaremos el curso de PHP desde Cero, donde podrás disfrutar de más de 12 horas de clases con nuestro experto Vicente Herrera.

PHP Developer

PHP Developer

carrera

Incluye 5 cursos:

  • Curso de Git, GitHub y Jekyll
  • Curso Online de Laravel 5
  • Curso de SQL desde Cero (versión 2017)

y 2 cursos más!

Duración: 24 horas y 4 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars