TableNames
sono identificatori, quindi non devono essere citati tra virgolette singole. Poiché il nometabella che hai utilizzato non è una parola chiave riservata, puoi semplicemente rimuovere le virgolette a capo,
INSERT INTO student (FirstName, LastName....
Quando avvolgi qualcosa con virgolette singole, costringe quell'oggetto a diventare una stringa letterale. Quindi, quando gli identificatori sono racchiusi tra virgolette singole, significa che non sono più identificatori.
Il server genera un'eccezione perché INSERT INTO
si aspetta un identificatore non stringa letterale.
Quando hai utilizzato accidentalmente un nome di tabella che è un MySQL riservato Parola chiave
, non utilizzare virgolette singole per delimitare l'identificatore ma con backticks
.
Come nota a margine, la query è vulnerabile con SQL Injection
se il valore(s ) delle variabili proveniva dall'esterno. Si prega di dare un'occhiata all'articolo qui sotto per sapere come prevenirlo. Usando PreparedStatements
puoi sbarazzarti dell'uso di virgolette singole attorno ai valori.