Maison >base de données >tutoriel mysql >Comment migrer de `mysql_real_escape_string()` vers les instructions préparées PDO ?
Remplacer mysql_real_escape_string() par PDO
Dans la transition des fonctions mysql_* vers PDO, il est essentiel de comprendre que PDO fait n'a pas d'équivalent exact de mysql_real_escape_string().
Au lieu d'échapper manuellement les chaînes, PDO s'appuie sur des instructions préparées pour se protéger contre l'injection SQL. Les instructions préparées utilisent des espaces réservés (?) pour les valeurs insérées ultérieurement, empêchant ainsi l'exécution de caractères malveillants sous forme de code.
Exemple :
<code class="php"><?php // Connect to the database $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'password'); // Prepare the statement with placeholder for value $stmt = $db->prepare('SELECT * FROM users WHERE username = ?'); // Bind the value to the placeholder (already sanitized via other means) $stmt->bindParam(1, $username); // Execute the statement without fear of SQL injection $stmt->execute(); // Fetch the results $users = $stmt->fetchAll(PDO::FETCH_ASSOC);</code>
Avantages d'utilisation de PDO :
Remarque : Bien que PDO::quote() puisse être utilisé pour échapper une chaîne, il n'est généralement pas recommandé car il n'offre pas le même niveau de protection sous forme d'instructions préparées.
En adhérant aux meilleures pratiques et en utilisant des instructions préparées dans PDO, les développeurs peuvent prévenir efficacement les vulnérabilités d'injection SQL dans leur code.
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!