【发布时间】:2019-11-03 12:50:17
【问题描述】:
当我运行下面的 SQL 查询时,我收到错误 print(db.execute("SELECT * FROM (?);"), (tableName)) sqlite3.OperationalError:靠近“?”:语法错误
db = sqlite3.Connection(":memory:")
db.execute("CREATE TABLE Students(name);")
tableName = "Students"
var1 = "Jon"
var2 = "Steve"
var3 = "Chuckie"
db.execute("INSERT INTO Students VALUES (?), (?), (?)", (var1, var2, var3))
print(db.execute("SELECT * FROM (?);"), (tableName))
将参数传递给 SQL 查询的正确方法是什么?
【问题讨论】:
-
您不能参数化表名。如果您尝试连接/插入查询字符串,这是可能的,但如果没有正确引用,则会导致 SQL 注入。
-
我需要参数化表名,那么最好的方法是什么? @LukaszSzozda