【发布时间】:2016-09-06 01:45:17
【问题描述】:
我正在运行一个 Python 机器人,它连接到 SQL 数据库并更新表中的值。
我有以下代码:
mycursor.execute("SELECT * FROM reputation WHERE username = '" + str(critiquer) + "'")
我收到错误“...检查与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的 ''' 附近使用的正确语法”
我做了一些调试,字符串“critiquer”没有问题,并且该行存在于表中。
希望能对此问题有所了解。
【问题讨论】:
-
critiquer可能包含单引号,因此会出现错误。 -
@EduardDaduya
critiquer不包含单引号。我还通过执行不带变量的查询来仔细检查这一点,但我仍然收到错误消息。 -
您应该使用参数化查询来避免此类问题。
-
参数化查询既可以解决悬空引号问题,又可以保护您免受 SQL 注入。