Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-11-09 07:12:02265parcourir

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);

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);

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']);
  • 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']);

Récupération des résultats

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

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
    }
}

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:
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