我曾尝试使用带有条目小部件的 tkinter 将记录插入 sql table,但出现 sql 语法错误
I've been tried to insert a record to sql table using tkinter with entry widget, but i got an sql syntax error
这是我的更新:
def submit():
nama = Nama.get()
tgl_lahir = tgl_Lahir.get()
alamat = Alamat.get()
no_telp = No_telp.get()
insert = (nama,tgl_lahir,alamat,no_telp)
#connect to database
db = pymysql.connect(db="db_petugas", host="localhost", passwd="", user="root")
#prepare cursor
cur = db.cursor()
#insert into petugas table
sql = "INSERT INTO petugas VALUES ("",%s, %s, %s, %s);"
#execute sql code
cur.execute(sql, insert)
db.commit()
db.close()
#delete the entry
Nama.delete(0, END)
tgl_Lahir.delete(0, END)
Alamat.delete(0, END)
No_telp.delete(0, END)
这是我得到的错误:
pymysql.err.ProgrammingError: (1064, "您的 SQL 语法有误;请查看与您的 MariaDB 服务器版本对应的手册,了解在 ''Vanes' 附近使用的正确语法,'6 月 1 日2003', 'Grand Hill 23', '091293812030')' 在第 1 行")
通过 python 使用与 sql 查询的串联是不安全的,因为它容易受到 sql 注入的攻击。我建议尝试使用占位符 (%s
) 和参数替换,例如:
sql = "INSERT INTO petugas VALUES (NULL, %s, %s, %s);" #Using placeholders
# execute sql code
cur.execute(sql,insert) #substituting the tuple as a parameter
db.commit()
db.close()
希望这消除了您的错误,如有任何疑问,请告诉我。
干杯
这是我的更新:
def submit():
nama = Nama.get()
tgl_lahir = tgl_Lahir.get()
alamat = Alamat.get()
no_telp = No_telp.get()
insert = (nama,tgl_lahir,alamat,no_telp)
#connect to database
db = pymysql.connect(db="db_petugas", host="localhost", passwd="", user="root")
#prepare cursor
cur = db.cursor()
#insert into petugas table
sql = "INSERT INTO petugas VALUES ("",%s, %s, %s, %s);"
#execute sql code
cur.execute(sql, insert)
db.commit()
db.close()
#delete the entry
Nama.delete(0, END)
tgl_Lahir.delete(0, END)
Alamat.delete(0, END)
No_telp.delete(0, END)
这是我得到的错误: pymysql.err.ProgrammingError: (1064, "您的 SQL 语法有误;请查看与您的 MariaDB 服务器版本对应的手册,了解在 ''Vanes' 附近使用的正确语法,'6 月 1 日2003', 'Grand Hill 23', '091293812030')' 在第 1 行")
通过 python 使用与 sql 查询的串联是不安全的,因为它容易受到 sql 注入的攻击。我建议尝试使用占位符 (%s
) 和参数替换,例如:
sql = "INSERT INTO petugas VALUES (NULL, %s, %s, %s);" #Using placeholders
# execute sql code
cur.execute(sql,insert) #substituting the tuple as a parameter
db.commit()
db.close()
希望这消除了您的错误,如有任何疑问,请告诉我。
干杯