En SQL, los valores de cadena deben citarse:
VALUES ('value1', 'value2')"
Cuando usas variables:
VALUES ($var1, $var2)");
No se citan... a menos que las comillas estén en los propios valores.
Así que si $var1 = 'value1'; $var2 = 'value2'
luego (después de que las variables se interpolen en su cadena) su SQL se verá así:
VALUES (value1, value2)"
Puede resolver su problema inmediato agregando comillas:
VALUES ('$var1', '$var2')");
pero esto no soluciona su principal vulnerabilidad de seguridad y permite que sus datos rompan la consulta de diferentes maneras.
Debe evitar crear sentencias SQL ensamblando cadenas a partir de variables . De esta manera conduce a agujeros de seguridad de inyección SQL. Utilice una interfaz que admita argumentos enlazados . Ellos se encargarán de cotizar y escapar por usted.