{{1}}
我似乎遇到了一个常见错误...
sqlite3无法识别的令牌:
当返回值是数字/字符的组合并且字段中存在其他特殊字符时,会发生此错误。
有时,如果该字段仅包含数字或字符而不是组合,则可以使用。
我从中选择的下拉列表(tableGrade)应该每次都找到一个完全匹配的列表,因为下拉列表是从同一表/列填充的。
请问我该如何处理我的查询以免受注入攻击?
答案 0 :(得分:1)
由于该列包含数字和/或字符,因此您必须考虑其数据类型为TEXT
,尽管在数据类型方面 SQLite 并不严格,因为您可以定义一个列的数据类型为INT
,并在其中存储任何类型的文本。
您必须更改的是选择数据的方式。
您必须使用占位符?
(参数标记),如下所示:
c.execute("SELECT prefix FROM " + tableType + " WHERE grade = ?", (tableGrade,))
其中tableType
是保存表格名称的变量,而tableGrade
是保存您要过滤的成绩的字符串值。