Améliorer l'instruction SQL avec les variables PHP peut générer dynamiquement une requête. Ce qui suit est le problème que vous avez rencontré:
Afin de résoudre cette erreur, veuillez suivre le guide suivant:
<code class="language-php">$type = 'testing'; mysql_query("INSERT INTO contents (type, reporter, description) VALUES($type, 'john', 'whatever')");</code>
<.> 1. Utilisez la déclaration de pré-procédés
Toutes les variables qui indiquent le texte SQL (chaîne, nombres) dans l'instruction sont obligatoires. Ce qui suit est le flux de travail:
Utiliser le lieu occupe:Les variables sont remplacées dans la requête SQL au symbole de placement.
prepare()
Exécuter: bind_param()
execute()
en APD:
<code class="language-php">$type = 'testing'; $reporter = "John O'Hara"; $description = 'whatever'; //添加了description变量 $sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量 $stmt = $mysqli->prepare($sql); $stmt->bind_param("sss", $type, $reporter, $description); //修改了参数类型和数量 $stmt->execute();</code>
Pour les pièces de requête telles que les mots clés, les identifiants ou les opérateurs, veuillez utiliser la méthode de la liste blanche. Filtrez ces variables via la liste de valeur autorisée prédéfinie:
<code class="language-php">$type = 'testing'; $reporter = "John O'Hara"; $description = 'whatever'; //添加了description变量 $sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量 $stmt = $mysqli->prepare($sql); $stmt->bind_param("sss", $type, $reporter, $description); //修改了参数类型和数量 $stmt->execute();</code>
Assurez-vous de formater correctement l'identifiant conformément à la syntaxe de la base de données (par exemple, le nombre anti-attraction de MySQL). Ensuite, cette variable est incluse en toute sécurité dans la chaîne SQL:
Filtrez l'instruction de pré-procédé et une liste blanche, vous pouvez effectivement empêcher SQL d'injecter des attaques et intégrer en toute sécurité les variables PHP dans votre requête MySQL. Veuillez noter que la fonction<code class="language-php">$type = 'testing'; $reporter = "John O'Hara"; $description = 'whatever'; //添加了description变量 $sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量 $stmt = $pdo->prepare($sql); $stmt->execute([$type, $reporter, $description]); //修改了参数数量</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!