TableNames
sind Bezeichner und sollten daher nicht in einfache Anführungszeichen gesetzt werden. Da der von Ihnen verwendete Tabellenname kein reserviertes Schlüsselwort ist, können Sie diese Anführungszeichen einfach entfernen,
INSERT INTO student (FirstName, LastName....
Wenn Sie etwas in einfache Anführungszeichen setzen, wird dieses Objekt gezwungen, ein Zeichenfolgenliteral zu werden. Wenn also Bezeichner in einfache Anführungszeichen eingeschlossen werden, bedeutet dies, dass sie keine Bezeichner mehr sind.
Der Server löst eine Ausnahme aus, weil INSERT INTO
erwartet einen Bezeichner, kein String-Literal.
Wenn Sie versehentlich einen Tabellennamen verwendet haben, der ein MySQL Reserved Schlüsselwort
verwenden Sie keine einfachen Anführungszeichen, um den Bezeichner abzugrenzen, sondern backticks
.
Als Nebenbemerkung ist die Abfrage mit SQL Injection
angreifbar
wenn der Wert (s ) der Variablen kam von außen. Bitte werfen Sie einen Blick auf den folgenden Artikel, um zu erfahren, wie Sie dies verhindern können. Durch die Verwendung von PreparedStatements
Sie können die Verwendung von einfachen Anführungszeichen um Werte loswerden.