3.4 Conexión a bases de datos en PHP
Introducción
En este tema, aprenderemos cómo conectarnos a bases de datos MySQL desde PHP utilizando MySQLi y PDO. Además, realizaremos consultas y operaremos con la base de datos para poblar una tabla, mostrar datos y realizar cálculos como el total de productos vendidos, etc.
1. Conexión a una base de datos en PHP:
PHP ofrece varias formas de conectarse a bases de datos, y en este tema nos centraremos en dos métodos principales:
- MySQLi (MySQL Improved): Es una extensión de PHP que permite acceder a bases de datos MySQL. Ofrece dos formas de conectarse: orientada a objetos y procedimental.
- PDO (PHP Data Objects): Es una interfaz de acceso a bases de datos que no está limitada solo a MySQL, sino que también soporta otras bases de datos como PostgreSQL, SQLite, etc.
Ambos métodos son eficientes, pero PDO es más flexible porque permite cambiar la base de datos sin modificar demasiado el código.
2. Usando MySQLi para conectarse a una base de datos
Con MySQLi, puedes conectarte a una base de datos MySQL utilizando la extensión mysqli. Esta extensión es más segura y eficiente que la antigua extensión mysql, que ha quedado obsoleta. Dentro de MySQLi, puedes elegir entre dos estilos de programación: orientada a objetos y procedimental.
Procedimental: Este estilo utiliza funciones y procedimientos para interactuar con la base de datos. Es más sencillo y directo, pero menos flexible.
Orientada a objetos: Este estilo utiliza clases y objetos para interactuar con la base de datos. Es más moderno y permite un mejor manejo de errores y una mayor flexibilidad.
No existen diferencias significativas de rendimiento entre las dos interfaces. Los usuarios puede basar su elección en sus preferencias personales.
Conexiones
1 2 3 4 5 6 7 8 9 | |
new mysqli("localhost", "usuario", "contraseña", "basededatos"): Crea una nueva conexión a la base de datos MySQL. Aquí se pasan cuatro parámetros:- host: el servidor donde está alojada la base de datos (en este caso, local).
- usuario: el nombre de usuario para conectarse a la base de datos.
- contraseña: la contraseña del usuario.
- basededatos: el nombre de la base de datos a la que deseas acceder.
$conexion->connect_error: Si hay algún error en la conexión, se mostrará un mensaje de error y se detendrá el script condie(). En caso contrario, se imprime un mensaje de éxito.
1 2 3 4 5 6 7 8 9 | |
mysqli_connect("localhost", "usuario", "contraseña", "basededatos"): Crea una nueva conexión a la base de datos MySQL. Aquí se pasan cuatro parámetros:- host: el servidor donde está alojada la base de datos (en este caso, local).
- usuario: el nombre de usuario para conectarse a la base de datos.
- contraseña: la contraseña del usuario.
- basededatos: el nombre de la base de datos a la que deseas acceder.
mysqli_connect_error(): Si hay algún error en la conexión, se mostrará un mensaje de error y se detendrá el script condie(). En caso contrario, se imprime un mensaje de éxito.
3. Usando PDO para conectarse a una base de datos
PDO (PHP Data Objects) es una forma más flexible de conectarse a bases de datos en PHP, ya que permite trabajar con diferentes bases de datos. La sintaxis es más compleja, pero también proporciona más características.
Conexión con PDO
Conexión PDO
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
-
new PDO("mysql:host=localhost;dbname=basededatos", "usuario", "contraseña"): La cadena de conexión tiene el formatomysql:host=localhost;dbname=basededatos. Aquí,"localhost"es el servidor de la base de datos, y"basededatos"es el nombre de la base de datos. -
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION): Esta línea establece el modo de manejo de errores para que las excepciones se lancen en caso de error, lo que facilita la depuración. -
catch(PDOException $e): Si hay un error en la conexión, se captura la excepción y se muestra el mensaje de error.
4. Seleccionar y usar bases de datos
Una vez que te has conectado con éxito a la base de datos, puedes seleccionar la base de datos utilizando la instrucción USE de SQL. Sin embargo, si ya especificas la base de datos en la cadena de conexión (como en los ejemplos anteriores), no es necesario usar USE.
Si necesitas seleccionar una base de datos después de haber realizado la conexión, puedes hacerlo con la siguiente consulta:
Seleccionar base de datos
mysqli_select_db($conexion, "nombre_de_base_de_datos");
mysqli_select_db($conexion, "nombre_de_base_de_datos"): Selecciona la base de datos especificada. Aquí,$conexiones la conexión a la base de datos y"nombre_de_base_de_datos"es el nombre de la base de datos que deseas usar.$conexion: Es la variable que contiene la conexión a la base de datos."nombre_de_base_de_datos": Es el nombre de la base de datos que deseas seleccionar.
$conexion->select_db('nombre_de_base_de_datos');
$conexion->select_db('nombre_de_base_de_datos'): Selecciona la base de datos especificada. Aquí,$conexiones la conexión a la base de datos y'nombre_de_base_de_datos'es el nombre de la base de datos que deseas usar.
Seleccionar y usar bases de datos con PDO
Seleccionar base de datos con PDO
1 | |
->exec(sentencia SQL): Ejecuta una sentencia SQL. En este caso, se utiliza para seleccionar la base de datos. La sentencia NO debe devolver resultado.$conexion->exec("USE nombre_de_base_de_datos"): Selecciona la base de datos especificada. Aquí,$conexiones la conexión a la base de datos y"nombre_de_base_de_datos"es el nombre de la base de datos que deseas usar.
5. Cierre de la conexión
Es importante cerrar la conexión una vez que hayas terminado de interactuar con la base de datos. Esto libera recursos y mejora el rendimiento de la aplicación. Hay que tener en cuenta que la aplicación puede recibir un gra número de conexiones simultáneas, por lo que es recomendable cerrar la conexión cuando ya no se necesite, y no agotar el pool de conexiones.
Cerrar conexión
mysqli_close($conexion);
mysqli_close($conexion): Cierra la conexión a la base de datos. Aquí, $conexion es la variable que contiene la conexión a la base de datos.
$conexion->close();
$conexion->close(): Cierra la conexión a la base de datos. Aquí, $conexion es la variable que contiene la conexión a la base de datos.
$conexion = null;
$conexion = null: Cierra la conexión a la base de datos. Aquí, $conexion es la variable que contiene la conexión a la base de datos. Al establecerla en null, PHP cierra automáticamente la conexión.
6. Resumen de la conexión a bases de datos
-
MySQLi y PDO son dos métodos principales para conectarse a bases de datos MySQL desde PHP.
-
MySQLi es más sencillo de usar en el caso de MySQL, pero solo funciona con bases de datos MySQL.
-
PDO es más flexible y soporta múltiples tipos de bases de datos.
-
-
La selección de la base de datos no siempre es necesaria si ya se especifica en la cadena de conexión.
-
Siempre es importante cerrar la conexión después de usarla para liberar recursos.
7. Ejercicios
Ejercicio 1: Conexión a la base de datos
- Para este ejercicio puedes utilizar cualquiera de las base de datos, solo vamos a realizar la conexión.
- Crea un arhivo PHP que solicite al susuario datos:
- Nombre de usuario
- Contraseña
- Selector con el tipo de conexión
- MySQLi (Procedimental)
- MySQLi (Orientado a objetos)
- PDO
- Crea un archivo PHP que realice la conexión a la base de datos con los datos solicitados en el paso anterior. Deberá mostrar un mensaje de éxito o error según corresponda.
- Cierra la conexión al finalizar.
Solución HTML con formulario con datos de conexión:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
Solución PHP para realizar la conexión:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | |