Maison >développement back-end >tutoriel php >Pourquoi les variables PHP provoquent-elles des erreurs lorsqu'elles sont utilisées dans la clause VALUES de MySQL ?
Problème :
En PHP, utiliser une variable dans une L'instruction MySQL incluse dans VALUES provoque problèmes.
Question :
Pourquoi l'inclusion d'une variable dans VALUES entraîne-t-elle des erreurs ?
Réponse :
Il existe deux approches distinctes pour inclure des variables PHP dans les instructions MySQL correctement :
Utiliser les instructions préparées :
Pour les variables représentant des littéraux de données SQL (chaînes, nombres), des instructions préparées doivent être utilisées. Cela implique :
Exemple (mysqli) :
$type = 'testing'; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)"; $mysqli->execute_query($sql, [$type, $reporter, $description]);
Utiliser le filtrage de liste blanche :
Pour toute autre variable représentant une partie de requête (par exemple, mot-clé , identifiant), ils doivent être filtrés via une liste blanche, garantissant que seules les valeurs autorisées sont utilisées. Exemple (en vérifiant orderby) :
$orderby = $_GET['orderby'] ?: 'name'; $allowed = ['name', 'price', 'qty']; $key = array_search($orderby, $allowed); if ($key === false) throw new InvalidArgumentException("Invalid field name");
Conclusion :
Le respect de ces principes protège contre l'injection SQL et garantit la bonne exécution des requêtes lorsque des variables PHP sont impliquées. Les instructions préparées doivent être utilisées pour les littéraux de données, tandis que la liste blanche garantit que seules les valeurs autorisées sont insérées dans d'autres parties de la requête.
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!