Maison > développement back-end > tutoriel php > Comment puis-je remplacer les fonctions MySQL par PDO pour améliorer la sécurité et les performances ?

Comment puis-je remplacer les fonctions MySQL par PDO pour améliorer la sécurité et les performances ?

Barbara Streisand
Libérer: 2024-11-09 07:12:02
original
347 Les gens l'ont consulté

How can I replace MySQL functions with PDO for improved security and performance?

Remplacement des fonctions MySQL par PDO

Introduction

L'extension MySQL pour PHP est obsolète et sera supprimée à l'avenir . Comme alternative, l'extension PDO (PHP Data Objects) est recommandée pour la connexion à MySQL et à d'autres bases de données. Cet article fournit un guide sur la façon de remplacer les fonctions MySQL par PDO.

Pourquoi convertir en PDO ?

  • Sécurité améliorée : PDO offre une protection contre les attaques par injection SQL.
  • Performances améliorées : PDO minimise les frais généraux et fournit de meilleurs mécanismes de mise en cache.
  • Abstraction de la base de données : PDO permet une connexion transparente à plusieurs types de bases de données.

Connexion à MySQL

$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$connection = new PDO($dsn, $user, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Copier après la connexion

Connexion à MSSQL

$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$connection = new PDO($dsn, $user, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Copier après la connexion

Exécution de requêtes

PDO utilise des instructions préparées pour éviter les vulnérabilités d'injection SQL.

  • Préparé requête avec nommé paramètres :
$SQL = 'SELECT ID, EMAIL FROM users WHERE name = :username';
$stmt = $connection->prepare($SQL);
$stmt->execute([':username' => 'someone']);
Copier après la connexion
  • Requête préparée avec des paramètres indexés :
$SQL = 'SELECT ID, EMAIL FROM users WHERE name = ?';
$stmt = $connection->prepare($SQL);
$stmt->execute(['someone']);
Copier après la connexion

Récupération des résultats

  • Récupérer une seule ligne en tant que array:
$row = $stmt->fetch(PDO::FETCH_ASSOC);
Copier après la connexion
  • Récupération de toutes les lignes sous forme d'un tableau de tableaux :
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
Copier après la connexion

Exemple de classe

Une classe de connexion PDO simple pour encapsuler les éléments communs opérations :

class PdoConnection {

    public function __construct($dsn, $user, $password, $options = []) {
        // ... initialize connection
    }

    public function query($sql) {
        // ... execute query and return result
    }

    public function prepare($sql, $params = []) {
        // ... execute prepared query and return result
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal