Maison  >  Article  >  développement back-end  >  Pourquoi devrais-je migrer des fonctions MySQL vers PDO ?

Pourquoi devrais-je migrer des fonctions MySQL vers PDO ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-11 05:29:03271parcourir

Why Should I Migrate from MySQL Functions to PDO?

Comment migrer des fonctions MySQL vers PDO

Introduction

En tant que PHP 5.5.0 marque la dépréciation des fonctions MySQL, il est essentiel de passer à des alternatives comme PDO ou MySQLi pour les opérations de base de données. Cet article fournit un guide pour migrer votre code vers PDO, couvrant à la fois les serveurs MySQL et MSSQL.

Pourquoi les fonctions MySQL sont obsolètes

Les fonctions MySQL sont anciennes et sujettes à la sécurité vulnérabilités, les rendant inadaptés aux applications PHP modernes. Ils manquent de fonctionnalités pratiques et sont difficiles à appliquer en toute sécurité. PDO et MySQLI résolvent ces problèmes et proposent des améliorations significatives.

Connexion à MySQL avec PDO

  1. Le module PHP php_pdo_mysql.dll est requis.
  2. Créez une instance PDO à l'aide du DSN (Data Source Name) :

    • $dsn = 'mysql:dbname=databasename;host =127.0.0.1';
    • $dbh = new PDO($dsn, $user, $password);

Connexion à MSSQL avec PDO

  1. Installer les pilotes php_pdo_sqlsrv_##_ts.dll ou php_pdo_sqlsrv_##_nts.dll.
  2. Créez une instance PDO en utilisant le DSN (Data Source Name):

    • $dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
    • $dbh = new PDO($dsn, $user, $password);

Exécution de requêtes avec des instructions préparées

PDO utilise des instructions préparées qui empêchent l'injection SQL en nettoyant les entrées utilisateur insérées dans les requêtes SQL. Pour préparer une instruction :

  1. Utilisez ->prepare() pour créer une instruction préparée.

    • $SQL = 'SELECT ID, EMAIL FROM utilisateurs WHERE user = :username';
    • $stmt = $dbh->prepare($SQL);
  2. Paramètre de liaison ( s) à l'instruction préparée en utilisant ->bindValue():

    • $stmt->bindValue(':username', $username);

Exécution de requêtes

  1. Exécutez l'instruction préparée en utilisant ->execute() sans passer aucun arguments :

    • $stmt->execute();
  2. Pour les requêtes directes, utilisez ->query() :

    • $result = $dbh->query($SQL);

Récupération des résultats

fetch() récupère une seule ligne de l'ensemble de résultats. fetchAll() récupère toutes les lignes dans un tableau.

Exemple de classe pour PDO

class pdoConnection {
    // ...
    public function prepare($SQL, $params = array()) {
        $result = $this->connection->prepare($SQL);
        $result->execute($params);
        return $result;
    }
}

// Usage:
$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$result = $db->prepare($SQL, array(":username" => 'someone'));

Conclusion

La migration vers PDO à partir des fonctions MySQL nécessite quelques modifications de code, mais elle améliore considérablement la sécurité de la base de données et prépare votre application aux futures versions de PHP. Les exemples de code et la classe d'exemple fournis devraient faciliter une transition en douceur.

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