mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'X' in 'where clause'
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'X' in 'where clause'
这是我的脚本:
import mysql.connector
def loginsystem():
db = mysql.connector.connect(host="127.0.0.1",
user="root",
passwd="",
db="dbpython")
cursor = db.cursor()
loop = 'true'
while (loop == 'true'):
username = str(input("Username : "))
password = str(input("Password : "))
if (cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s"%(username,password))):
print("Logged İn")
else:
print("Failure")
db.commit()
loginsystem()
我正在安装在线系统,但是我遇到了登录系统的问题。如何修复 "Unknown column 'x' in where clause" 或者您有任何其他代码建议?
if (cursor.execute("SELECT * FROM users WHERE (username =? password = ?) VALUES(?,?)"(username,password))):
我试过用这个方法,但是没有
Traceback (most recent call last):
File "C:/Users/artun/PycharmProjects/DENEMELER/Login System.py", line 21, in <module>
loginsystem()
File "C:/Users/artun/PycharmProjects/DENEMELER/Login System.py", line 15, in loginsystem
if (cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s"%(username,password))):
File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\connection.py", line 553, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\connection.py", line 442, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'oziboran123' in 'where clause'
Process finished with exit code 1
这是代码的输出,但我预计代码的输出是 "Logged In" 或 "Failure"
考虑参数化而不是字符串插值,后者涉及 two-step 准备语句的过程,然后执行绑定参数。下面使用 execute 调用的两个参数:cursor.execute(query, params)
。此外,user 和 password 是 MySQL 中的 reserved words,应使用反引号进行转义。
请注意 mysql.connector
API 的参数占位符 %s
不应与 Python 的模字符串格式符号混淆(顺便说一句是少preferred string formatting method in Python for more preferred str.format
).
# PREPARED STATEMENT
sql = """SELECT * FROM `users`
WHERE `username` = %s AND `password` =%s
"""
# EXECUTE WITH PARAMS
cursor.execute(sql, (username, password))
试试下面的代码:
"""SELECT * FROM `users` WHERE `username` '{}' AND `password` '{}'""".format(username,password))
这是我的脚本:
import mysql.connector
def loginsystem():
db = mysql.connector.connect(host="127.0.0.1",
user="root",
passwd="",
db="dbpython")
cursor = db.cursor()
loop = 'true'
while (loop == 'true'):
username = str(input("Username : "))
password = str(input("Password : "))
if (cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s"%(username,password))):
print("Logged İn")
else:
print("Failure")
db.commit()
loginsystem()
我正在安装在线系统,但是我遇到了登录系统的问题。如何修复 "Unknown column 'x' in where clause" 或者您有任何其他代码建议?
if (cursor.execute("SELECT * FROM users WHERE (username =? password = ?) VALUES(?,?)"(username,password))):
我试过用这个方法,但是没有
Traceback (most recent call last):
File "C:/Users/artun/PycharmProjects/DENEMELER/Login System.py", line 21, in <module>
loginsystem()
File "C:/Users/artun/PycharmProjects/DENEMELER/Login System.py", line 15, in loginsystem
if (cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s"%(username,password))):
File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\connection.py", line 553, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\connection.py", line 442, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'oziboran123' in 'where clause'
Process finished with exit code 1
这是代码的输出,但我预计代码的输出是 "Logged In" 或 "Failure"
考虑参数化而不是字符串插值,后者涉及 two-step 准备语句的过程,然后执行绑定参数。下面使用 execute 调用的两个参数:cursor.execute(query, params)
。此外,user 和 password 是 MySQL 中的 reserved words,应使用反引号进行转义。
请注意 mysql.connector
API 的参数占位符 %s
不应与 Python 的模字符串格式符号混淆(顺便说一句是少preferred string formatting method in Python for more preferred str.format
).
# PREPARED STATEMENT
sql = """SELECT * FROM `users`
WHERE `username` = %s AND `password` =%s
"""
# EXECUTE WITH PARAMS
cursor.execute(sql, (username, password))
试试下面的代码:
"""SELECT * FROM `users` WHERE `username` '{}' AND `password` '{}'""".format(username,password))