[英]MySQL ProgrammingError on simple SELECT query with user-provided input
def search():
searc = input("Enter the name you want to search: ")
s = (searc)
mycursor.execute("SELECT * FROM studen WHERE Name = {}".format(s))
for i in mycursor:
print(i)
我正在嘗試從用戶輸入名稱的studen
表中獲取數據。
這是我得到的錯誤:
錯誤:mysql.connector.errors.ProgrammingError:1054(42S22):“where 子句”中的未知列“ayush”
直接的問題是您的查詢缺少引號。 假設ayush
是您的輸入,您使用.format()
獲得的字符串如下所示:
SELECT * FROM studen WHERE Name = ayush
但它需要看起來像這樣:
SELECT * FROM studen WHERE Name = 'ayush'
但是,您根本不應該使用.format()
,因為它會讓您對SQL injection敞開大門。
這是使用mysql.connector
參數化查詢的正確方法:
mycursor.execute("SELECT * FROM studen WHERE Name = %s", (s,))
另請注意,我在這里使用(s,)
而不是(s)
來獲取一個元素的元組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.