21 octubre, 2024
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.
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;
}
}
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();
}
}
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>";
}
charset=utf8
o charset=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 10341 veces | 1 usuarios
215 descargas
Para descargar el código crea una cuenta
Crear cuenta© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024