In SQL moeten stringwaarden tussen aanhalingstekens staan:
VALUES ('value1', 'value2')"
Als je variabelen gebruikt:
VALUES ($var1, $var2)");
Ze worden niet aangehaald ... tenzij de aanhalingstekens in de waarden zelf staan.
Dus als $var1 = 'value1'; $var2 = 'value2'
dan (nadat de variabelen in je string zijn geïnterpoleerd) ziet je SQL er als volgt uit:
VALUES (value1, value2)"
U kunt uw onmiddellijke probleem oplossen door aanhalingstekens toe te voegen:
VALUES ('$var1', '$var2')");
maar dit verhelpt niet uw grote beveiligingsprobleem en laat uw gegevens de query op verschillende manieren onderbreken.
U moet het maken van SQL-instructies vermijden door strings van variabelen samen te stellen . Deze manier leidt tot beveiligingslekken in SQL-injectie. Gebruik een interface die gebonden argumenten ondersteunt . Zij zullen het citeren en escapen voor je afhandelen.