Maison > base de données > tutoriel mysql > Pourquoi devrais-je remplacer les fonctions MySQL par PDO en PHP ?

Pourquoi devrais-je remplacer les fonctions MySQL par PDO en PHP ?

Mary-Kate Olsen
Libérer: 2025-01-10 08:53:45
original
710 Les gens l'ont consulté

Why Should I Replace MySQL Functions with PDO in PHP?

Transition des fonctions MySQL vers PDO en PHP

Les fonctions MySQL de PHP devraient être obsolètes et éventuellement supprimées. Pour garantir la compatibilité future et tirer parti d'une sécurité et de fonctionnalités améliorées, les développeurs doivent migrer vers PHP Data Objects (PDO), une couche d'accès à la base de données robuste et orientée objet.

Les avantages de l'AOP :

  • Modernisation : PDO remplace les fonctions MySQL obsolètes par une approche contemporaine.
  • Agnosticisme des bases de données : PDO fournit une interface cohérente pour se connecter à divers systèmes de bases de données, pas seulement à MySQL. Cela simplifie le changement de base de données et améliore la portabilité du code.
  • Prévention des injections SQL : Les instructions préparées par PDO sont cruciales pour prévenir les vulnérabilités d'injection SQL, un problème de sécurité majeur.

Connexion aux bases de données avec PDO

Connexion MySQL :

<code class="language-php">$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>
Copier après la connexion

Connexion MSSQL :

<code class="language-php">$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>
Copier après la connexion

Exécuter des requêtes avec des instructions préparées

PDO utilise des instructions préparées pour une exécution de requêtes efficace et sécurisée. Voici comment lier des variables :

Paramètres nommés :

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = :username');
$statement->execute([':username' => 'example']);</code>
Copier après la connexion

Paramètres indexés :

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = ?');
$statement->execute(['example']);</code>
Copier après la connexion

Récupération des résultats de la requête

Plusieurs méthodes facilitent la récupération des résultats :

  • fetch() : renvoie une seule ligne sous forme de tableau.
  • fetchAll() : renvoie toutes les lignes sous forme d'un tableau de tableaux.
  • rowCount() : Fournit le nombre de lignes concernées (utile pour INSERT, UPDATE, DELETE).

Un exemple de classe de connexion PDO

Pour améliorer l'organisation et la réutilisabilité du code, envisagez une classe PDO personnalisée :

<code class="language-php">class MyPDO {
    public $dbh;

    public function __construct($dsn, $username, $password) {
        $this->dbh = new PDO($dsn, $username, $password);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function query($sql) {
        return $this->dbh->query($sql);
    }

    public function prepare($sql) {
        return $this->dbh->prepare($sql);
    }
}

// Example Usage:
$mypdo = new MyPDO($dsn, $username, $password);
$stmt = $mypdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->execute([':name' => 'example']);
while ($row = $stmt->fetch()) {
    echo $row['name'];
}</code>
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!

source:php.cn
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