Maison > base de données > tutoriel mysql > Comment puis-je inclure en toute sécurité les variables PHP dans les requêtes MySQL?

Comment puis-je inclure en toute sécurité les variables PHP dans les requêtes MySQL?

Susan Sarandon
Libérer: 2025-01-25 16:47:15
original
604 Les gens l'ont consulté

How Can I Safely Include PHP Variables in MySQL Queries?

Inclure des variables PHP dans les requêtes MySQL

Problème :

Inclure des variables PHP dans les instructions MySQL peut provoquer des erreurs, en particulier lorsqu'il est inséré en tant que valeurs dans les VALEURS clause.

Solution 1 : Utiliser des instructions préparées

Les instructions préparées fournissent un moyen sécurisé et efficace d'inclure des variables PHP dans les requêtes. Voici comment procéder :

  1. Préparez la requête : Remplacez les variables PHP par des caractères fictifs (par exemple ?).
  2. Liaison des variables : Associez des variables PHP à des espaces réservés.
  3. Exécutez le Requête : Exécutez l'instruction préparée avec les variables liées.

Exemple d'utilisation de mysqli :

$type = 'testing';
$reporter = "John O'Hara";
$sql = "INSERT INTO contents (type, reporter, description) VALUES (?, ?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $type, $reporter, $description);
$stmt->execute();
Copier après la connexion

Exemple d'utilisation de PDO :

$type = 'testing';
$reporter = "John O'Hara";
$sql = "INSERT INTO contents (type, reporter, description) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$type, $reporter, $description]);
Copier après la connexion

Solution 2 : Utiliser la liste blanche Filtrage

Pour les parties de requête qui représentent des identifiants (par exemple, des noms de table ou de champ), utilisez le filtrage par liste blanche pour garantir leur validité. Cela implique :

  1. Créer une liste blanche : Spécifiez une liste de valeurs autorisées.
  2. Vérification des variables : Vérifiez que les variables PHP correspondent valeurs autorisées.
  3. Identifiants de formatage : Formater les identifiants en fonction de la base de données syntaxe (par exemple, backticks pour MySQL).

Exemple de filtrage de liste blanche pour Trier par :

$orderby = $_GET['orderby'] ?: "name"; // Set default
$allowed = ["name", "price", "qty"]; // White list
if (!in_array($orderby, $allowed)) {
    throw new InvalidArgumentException("Invalid ORDER BY field name");
}
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