V SQL musí být hodnoty řetězce uvedeny v uvozovkách:
VALUES ('value1', 'value2')"
Když používáte proměnné:
VALUES ($var1, $var2)");
Nejsou uvozovány… pokud nejsou uvozovky v samotných hodnotách.
Takže pokud $var1 = 'value1'; $var2 = 'value2'
pak (po interpolaci proměnných ve vašem řetězci) vaše SQL vypadá takto:
VALUES (value1, value2)"
Svůj okamžitý problém můžete vyřešit přidáním uvozovek:
VALUES ('$var1', '$var2')");
ale to nevyřeší vaši závažnou bezpečnostní chybu a umožňuje vašim datům rozbít dotaz různými způsoby.
Měli byste se vyvarovat vytváření příkazů SQL sestavováním řetězců z proměnných . Tato cesta vede k bezpečnostním dírám SQL Injection. Použijte rozhraní, které podporuje vázané argumenty . Postarají se o citování a útěk za vás.