我的搜索頁面上有一個輸入框。我希望此函數(shù)在我的數(shù)據(jù)庫中的表(電影)中搜索輸入到該條目框中的任何文本(列名稱為“標(biāo)題”),然后顯示結(jié)果。def search_now(): conn = sqlite3.connect('movie_catalog.db') c = conn.cursor() searched = search_box.get() sql = "SELECT * FROM movies WHERE title = %s" name = (searched, ) result = c.execute(sql, name) if not result: result = "Movie not found" # Commit our changes conn.commit() # Close database connection conn.close()我不斷收到以下錯誤消息:sqlite3.OperationalError: near "%": syntax error我一直在使用的教程是使用 MYSql,所以我不確定“%s”占位符是否適用。有任何想法嗎?
1 回答

牧羊人nacy
TA貢獻1862條經(jīng)驗 獲得超7個贊
你應(yīng)該這樣做(不安全)
searched = search_box.get()
sql = "SELECT * FROM movies WHERE title = '%s'" % searched
result = c.execute(sql)
或這個(相當(dāng)安全地防止注射)
searched = search_box.get()
t = (searched,)
sql = "SELECT * FROM movies WHERE title=?"
result = c.execute(sql, t)
編輯:
在您的示例中,您將文字字符串傳遞SELECT * FROM movies WHERE title = '%s'"給數(shù)據(jù)庫,這就是它抱怨的原因%s
添加回答
舉報
0/150
提交
取消