21 octubre, 2024
Conexión a una Base de Datos Mysql con PHP PDO
Script para conectar una base de datos MYSQL en PHP PDO de forma eficiente y segura en una aplicación web: Clase conexion.php , modelo.php y index.php

Suscríbete a nuestro canal en Youtube
SuscríbirseCrear una clase abstracta en PHP para manejar la conexión a una base de datos MySQL de forma segura utilizando PDO (PHP Data Objects) es una buena práctica. Esto no solo proporciona una forma organizada de manejar las conexiones, sino que también facilita la reutilización del código.
A continuación, te muestro cómo implementar una clase abstracta que maneje la conexión a la base de datos usando PDO, junto con un ejemplo de uso.
Clase Abstracta Database
php
<?php
abstract class Database {
private static $instance = null;
protected $connection;
// Constructor privado para evitar instanciación externa
private function __construct() {
$this->connect();
}
// Método para obtener la instancia de la clase
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new static();
}
return self::$instance;
}
// Método para realizar la conexión a la base de datos
protected function connect() {
$host = 'localhost'; // Cambia esto según tu configuración
$dbname = 'tu_base_de_datos'; // Cambia esto por el nombre de tu base de datos
$user = 'tu_usuario'; // Cambia esto por tu usuario de MySQL
$password = 'tu_contraseña'; // Cambia esto por tu contraseña de MySQL
try {
$this->connection = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $password);
// Establecer el modo de error de PDO a excepción
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (PDOException $e) {
// Manejar error de conexión
echo "Error de conexión: " . $e->getMessage();
exit;
}
}
// Método para obtener la conexión
public function getConnection() {
return $this->connection;
}
}
Clase Derivada para Uso Específico
Puedes crear una clase que extienda la clase abstracta Database
para interactuar con la base de datos. Por ejemplo:
php
<?php
class UserDatabase extends Database {
public function getUsers() {
$query = "SELECT * FROM users";
$stmt = $this->getConnection()->prepare($query);
$stmt->execute();
return $stmt->fetchAll();
}
public function addUser($name, $email) {
$query = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $this->getConnection()->prepare($query);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
}
}
Ejemplo de Uso
Aquí tienes un ejemplo de cómo utilizar las clases para obtener y agregar usuarios:
php
// Incluir las clases
require_once 'Database.php';
require_once 'UserDatabase.php';
// Obtener instancia de UserDatabase
$userDb = UserDatabase::getInstance();
// Agregar un nuevo usuario
$userDb->addUser('Juan Pérez', 'juan@example.com');
// Obtener y mostrar todos los usuarios
$users = $userDb->getUsers();
foreach ($users as $user) {
echo "ID: {$user['id']}, Nombre: {$user['name']}, Email: {$user['email']}<br>";
}
- Uso de Sentencias Preparadas: La implementación de sentencias preparadas con parámetros vinculados ayuda a prevenir inyecciones SQL.
- Manejo de Errores: Capturar excepciones y manejar errores de conexión de manera adecuada es importante para la seguridad y estabilidad de la aplicación.
- Configuración del Charset: Usar
charset=utf8
ocharset=utf8mb4
para manejar correctamente los caracteres especiales y evitar problemas de codificación.
Con esta estructura, tienes una clase abstracta para la conexión a la base de datos que es reutilizable y segura, junto con un ejemplo práctico de cómo interactuar con la base de datos. Si necesitas más detalles o ajustes, ¡déjamelo saber!
Leido 11046 veces | 2 usuarios
Descarga del código fuente PHP de Conexión a una Base de Datos Mysql con PHP PDO
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
Opciones de descarga
- Usuarios Registrados: Inicia sesión para descarga inmediata.
- Nuevos Usuarios: Regístrate y descarga.