En SQL, les valeurs de chaîne doivent être entre guillemets :
VALUES ('value1', 'value2')"
Lorsque vous utilisez des variables :
VALUES ($var1, $var2)");
Ils ne sont pas cités... sauf si les guillemets sont dans les valeurs elles-mêmes.
Donc si $var1 = 'value1'; $var2 = 'value2'
puis (après l'interpolation des variables dans votre chaîne), votre SQL ressemble à ceci :
VALUES (value1, value2)"
Vous pouvez résoudre votre problème immédiat en ajoutant des guillemets :
VALUES ('$var1', '$var2')");
mais cela ne corrige pas votre vulnérabilité de sécurité majeure et permet à vos données de casser la requête de différentes manières.
Vous devez éviter de créer des instructions SQL en assemblant des chaînes à partir de variables . Cela conduit à des failles de sécurité SQL Injection. Utilisez une interface qui prend en charge les arguments liés . Ils s'occuperont des citations et des fuites pour vous.