In SQL, i valori di stringa devono essere citati:
VALUES ('value1', 'value2')"
Quando usi le variabili:
VALUES ($var1, $var2)");
Non sono citati... a meno che le virgolette non siano nei valori stessi.
Quindi se $var1 = 'value1'; $var2 = 'value2'
quindi (dopo che le variabili sono state interpolate nella tua stringa) il tuo SQL appare così:
VALUES (value1, value2)"
Potresti risolvere il tuo problema immediato aggiungendo virgolette:
VALUES ('$var1', '$var2')");
ma questo non risolve la tua grande vulnerabilità di sicurezza e consente ai tuoi dati di interrompere la query in diversi modi.
Dovresti evitare di creare istruzioni SQL assemblando stringhe da variabili . In questo modo si creano falle di sicurezza di SQL Injection. Utilizza un'interfaccia che supporti argomenti vincolati . Si occuperanno di quotare e fuggire per te.