我想知道一些基于用户输入动态创建表的方法(SQL Prepared Statement)
CREATE TABLE ? (
First_Name char(50),
Last_Name char(50)
)
我应该用什么代替问号
答案 0 :(得分:12)
PreparedStatement占位符不适用于表名或列名,它们仅适用于实际列值。
因此,您必须动态创建(准备好的)语句字符串,这意味着您的应用程序易受SQL注入攻击。取决于应用程序应该如何使用 - 以及由谁 - 这可能是一个很大的问题。
答案 1 :(得分:1)
正如其他答案所指出的那样,在这种情况下你不能使用预准备语句,因为大多数DBMS都不支持替换表名。
但是,我想指出,根据用户输入选择表名似乎是一个坏主意。你如何防止重复或无效的名称?
为什么表名很重要?