Maison > base de données > tutoriel mysql > le corps du texte

Comment remplacer les fonctions `mysql_*` obsolètes par des PDO et des instructions préparées pour des interactions sécurisées avec la base de données ?

Linda Hamilton
Libérer: 2024-11-06 13:42:02
original
275 Les gens l'ont consulté

How to Replace Outdated `mysql_*` Functions with PDO and Prepared Statements for Secure Database Interactions?

Remplacement des fonctions mysql_* par des PDO et des instructions préparées

Question :

Comment puis-je remplacer les fonctions mysql_* obsolètes par PDO et instructions préparées pour stocker et récupérer en toute sécurité des données d'une base de données ?

Réponse :

  1. Établir une connexion PDO :
$hostname = '*host*';
$username = '*user*';
$password = '*pass*';
$database = '*database*';

$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
Copier après la connexion
  1. Utiliser des instructions préparées pour insérer des données :
$username = $_POST['username'];
$email = $_POST['email'];

$stmt = $dbh->prepare("INSERT INTO `users` (username, email)
                        VALUES (?, ?)");

$stmt->bindParam(1, $username, PDO::PARAM_STR);
$stmt->bindParam(2, $email, PDO::PARAM_STR);

$stmt->execute();
Copier après la connexion
  1. Paramètre de longueur pour BindParam :

Le paramètre de longueur n'est pas requis pour PDO::PARAM_STR. Cependant, si vous avez une limite maximale de caractères pour le champ dans votre table de base de données, vous pouvez la spécifier après PDO::PARAM_STR comme indiqué ci-dessous :

$stmt->bindParam(1, $username, PDO::PARAM_STR, 255);
Copier après la connexion
  1. Déclarations préparées pour la récupération des données :
$user_id = $_GET['id'];

$stmt = $dbh->prepare("SELECT * FROM `users` WHERE `id` = ?");

$stmt->bindParam(1, $user_id, PDO::PARAM_INT);
Copier après la connexion
  1. Utilisation de bindParam pour différents types de données :
  • PDO::PARAM_STR pour les chaînes
  • PDO::PARAM_INT pour les entiers
  • PDO::PARAM_BOOL pour les booléens
  1. 安全性:
  • Les instructions préparées éliminent le besoin d'échappement manuel des chaînes avec des fonctions telles que mysql_real_escape_string.
  • PDO gère l'exécution des requêtes en toute sécurité, empêchant les vulnérabilités d'injection SQL.
  • Cependant, il est important de noter que les déclarations préparées à elles seules ne garantissent pas la sécurité. La validation des entrées et des mesures de désinfection appropriées doivent toujours être mises en œuvre.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!