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 :
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();
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]);
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 :
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"); }
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!