W SQL wartości łańcuchowe muszą być ujęte w cudzysłów:
VALUES ('value1', 'value2')"
Kiedy używasz zmiennych:
VALUES ($var1, $var2)");
Nie są cytowane… chyba że cytaty znajdują się w samych wartościach.
Więc jeśli $var1 = 'value1'; $var2 = 'value2'
następnie (po interpolacji zmiennych w ciągu) Twój kod SQL wygląda tak:
VALUES (value1, value2)"
Możesz rozwiązać swój najpilniejszy problem, dodając cytaty:
VALUES ('$var1', '$var2')");
ale to nie naprawia Twojej poważnej luki w zabezpieczeniach i pozwala Twoim danym przerwać zapytanie na różne sposoby.
Powinieneś unikać tworzenia instrukcji SQL przez łączenie ciągów ze zmiennych . W ten sposób dochodzi do luk w zabezpieczeniach SQL Injection. Użyj interfejsu, który obsługuje argumenty powiązane . Zajmą się cytowaniem i ucieczką za Ciebie.