我正在制作一個不和諧的機器人。我嘗試使用 SQLite3 數據庫來增加我的機器人的經濟性。但是當我創建專欄時出現錯誤:cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 30, 0, 0, 1, {guild.id})")sqlite3.OperationalError: near "s": syntax error而且,這是代碼:@client.eventasync def on_ready(): cursor.execute("""CREATE TABLE IF NOT EXISTS users ( name TEXT, id INT, cash BIGINT, rep INT, xp INT, lvl INT, server_id INT )""") for guild in client.guilds: for member in guild.members: if cursor.execute(f"SELECT id FROM users WHERE id = {member.id}").fetchone() is None: cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 30, 0, 0, 1, {guild.id})") else: pass connection.commit()
1 回答

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
代碼注入錯誤!member
考慮一下如果字符串化是會發生什么Foo's Bar
。你最終會執行
INSERT?INTO?users?VALUES?('Foo's?Bar... ????????????????????--?^?Syntax?error
我相信
cursor.execute(f"SELECT?id?FROM?users?WHERE?id?=?{member.id}") cursor.execute(f"INSERT?INTO?users?VALUES?('{member}',?{member.id},?30,?0,?0,?1,?{guild.id})")
應該
cursor.execute("SELECT?id?FROM?users?WHERE?id?=??",?(?member.id,?)) cursor.execute("INSERT?INTO?users?VALUES?(?,??,?30,?0,?0,?1,??)", ???(?str(member),?member.id,?guild.id?)?)
添加回答
舉報
0/150
提交
取消