TableNames
jsou identifikátory, takže by neměly být uváděny v jednoduchých uvozovkách. Vzhledem k tomu, že název_tabulky, který jste použili, není vyhrazeným klíčovým slovem, můžete tyto obalující uvozovky jednoduše odstranit,
INSERT INTO student (FirstName, LastName....
Když něco zabalíte do jednoduchých uvozovek, vynutí to, aby se tento objekt stal řetězcovým literálem. Když jsou tedy identifikátory zalomeny do jednoduchých uvozovek, znamená to, že již nejsou identifikátory.
Server vyvolá výjimku, protože INSERT INTO
očekává identifikátor, nikoli řetězcový literál.
Když jste omylem použili název tabulky, který je MySQL Reserved Klíčové slovo
, nepoužívejte k oddělování identifikátoru jednoduché uvozovky, ale pomocí backticks
.
Vedlejší poznámkou je, že dotaz je zranitelný pomocí SQL Injection
pokud je hodnota (s ) proměnných pochází zvenčí. Podívejte se prosím na níže uvedený článek, kde se dozvíte, jak tomu zabránit. Pomocí PreparedStatements
můžete se zbavit používání jednoduchých uvozovek kolem hodnot.