簡體   English   中英

MySQL ProgrammingError 在簡單的 SELECT 查詢與用戶提供的輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM