This question already has answers here:
When to use single quotes, double quotes, and backticks in MySQL
(12个答案)
2年前关闭。
我正在尝试基于密码输入创建访问控制系统。我在如何检查输入的密码是否在MySQL数据库中存在问题。
下面的代码段有效,它要求输入密码,并且当密码仅包含数字时,它可以与数据库成功解析。
但我想使用字母数字密码。我以为我可以将pincode列创建为
_mysql_exceptions.OperationalError:(1054,“'where子句'中的未知列'7988DB'”)
因此,我在
但是,请注意此处。由于
(12个答案)
2年前关闭。
我正在尝试基于密码输入创建访问控制系统。我在如何检查输入的密码是否在MySQL数据库中存在问题。
下面的代码段有效,它要求输入密码,并且当密码仅包含数字时,它可以与数据库成功解析。
pin_inp = raw_input("Enter PIN: ")
cursor.execute("SELECT COUNT(1) FROM members WHERE pincode = " + pin_inp + ";")
但我想使用字母数字密码。我以为我可以将pincode列创建为
VARCHAR
并输入字母数字pincode,但是这样就无法与数据库成功解析。使用字母数字输入时,出现此错误:_mysql_exceptions.OperationalError:(1054,“'where子句'中的未知列'7988DB'”)
因此,我在
members
表中有几行用于测试,有些行的列pincode
中包含数值,有些行具有字母数字值。当我运行上述代码时,数字输入正常,但字母数字值会引发1054错误。 最佳答案
使用数字值时,就像输入数字一样,但是使用字母数字值时,必须用撇号将它们括起来,例如'my value'
。因此,将您的代码更改为:
cursor.execute("SELECT COUNT(1) FROM members WHERE pincode = '" + pin_inp + "';")
但是,请注意此处。由于
pin_inp
来自用户的输入,因此该代码将对SQL注入开放。您要么必须对其进行验证,要么更好地使用parameterized SQL statement。07-26 03:39