В SQL стойностите на низове трябва да бъдат цитирани:
VALUES ('value1', 'value2')"
Когато използвате променливи:
VALUES ($var1, $var2)");
Те не са цитирани ... освен ако кавичките не са в самите стойности.
Така че, ако $var1 = 'value1'; $var2 = 'value2'
след това (след като променливите са интерполирани във вашия низ) вашият SQL изглежда така:
VALUES (value1, value2)"
Можете да разрешите непосредствения си проблем, като добавите кавички:
VALUES ('$var1', '$var2')");
но това не отстранява главната ви уязвимост в сигурността и позволява на вашите данни да разбият заявката по различни начини.
Трябва да избягвате да създавате SQL изрази чрез сглобяване на низове от променливи . Този начин води до дупки в сигурността на SQL Injection. Използвайте интерфейс, който поддържа свързани аргументи . Те ще се справят с цитирането и бягството вместо вас.