In SQL müssen String-Werte in Anführungszeichen gesetzt werden:
VALUES ('value1', 'value2')"
Wenn Sie Variablen verwenden:
VALUES ($var1, $var2)");
Sie werden nicht in Anführungszeichen gesetzt … es sei denn, die Anführungszeichen befinden sich in den Werten selbst.
Wenn also $var1 = 'value1'; $var2 = 'value2'
dann (nachdem die Variablen in Ihren String interpoliert wurden) sieht Ihr SQL so aus:
VALUES (value1, value2)"
Sie könnten Ihr unmittelbares Problem lösen, indem Sie Anführungszeichen hinzufügen:
VALUES ('$var1', '$var2')");
aber dies behebt nicht Ihre große Sicherheitslücke und lässt Ihre Daten die Abfrage auf unterschiedliche Weise unterbrechen.
Sie sollten es vermeiden, SQL-Anweisungen zu erstellen, indem Sie Strings aus Variablen zusammensetzen . Dieser Weg führt zu SQL-Injection-Sicherheitslücken. Verwenden Sie eine Schnittstelle, die gebundene Argumente unterstützt . Sie übernehmen das Zitieren und Escape für Sie.