mysql 如何解决“由于:不是所有的参数都在SQL语句中使用”错误?我在下面的代码中得到这个错误

klsxnrf1  于 2024-01-05  发布在  Mysql
关注(0)|答案(1)|浏览(151)
  1. #""""""""""""" UPDATE FUNCTION """"""""""
  2. def update_data(self):
  3. if self.var_dep.get()=="Select Department" or self.var_std_name.get()=="" or self.var_std_id.get()=="":
  4. messagebox.showerror("Error","All Fields are required",parent=self.root)
  5. else:
  6. try:
  7. update=messagebox.askyesno("Update","Do you want to update this student details",parent=self.root)
  8. if update>0:
  9. conn=mysql.connector.connect(host="localhost", username="root", password="Umer@123", database="face_recognizer")
  10. my_cursor=conn.cursor()
  11. my_cursor.execute("update student set Dep=%s,course=%s,Year=%s,Semester=%s,Division=%s,Roll=%s,Gender=%s,Dob=%s,Email=%s,Phone=%s,Address=%s,Teacher=%s,PhotoSample=%s where Student_id=%s",(
  12. self.var_dep.get(),
  13. self.var_course.get(),
  14. self.var_year.get(),
  15. self.var_semester.get(),
  16. self.var_std_name.get(),
  17. self.var_div.get(),
  18. self.var_roll.get(),
  19. self.var_gender.get(),
  20. self.var_dob.get(),
  21. self.var_email.get(),
  22. self.var_phone.get(),
  23. self.var_address.get(),
  24. self.var_teacher.get(),
  25. self.var_radio1.get(),
  26. self.var_std_id.get()
  27. ))
  28. else:
  29. if not update:
  30. return
  31. conn.commit()
  32. self.fetch_data()
  33. conn.close()
  34. messagebox.showinfo("Sucess","Student details successfully update completed",parent=self.root)
  35. except Exception as es:
  36. messagebox.showerror("Error",f"Due To:{str(es)}",parent=self.root)

字符串
我找不到错误。

kxeu7u2r

kxeu7u2r1#

对不起,先生,但你的代码真的很可怕....
也许可以稍微解耦一下

  1. args = (self.var_dep.get(),
  2. self.var_course.get(),
  3. self.var_year.get(),
  4. self.var_semester.get(),
  5. self.var_std_name.get(),
  6. self.var_div.get(),
  7. self.var_roll.get(),
  8. self.var_gender.get(),
  9. self.var_dob.get(),
  10. self.var_email.get(),
  11. self.var_phone.get(),
  12. self.var_address.get(),
  13. self.var_teacher.get(),
  14. self.var_radio1.get(),
  15. self.var_std_id.get())
  16. sql = "UPDATE student SET Dep=?,course=?,Year=?,Semester=?,Division=?,Roll=?,Gender=?,Dob=?,Email=?,Phone=?,Address=?,Teacher=?,PhotoSample=?\
  17. WHERE Student_id=?"
  18. my_cursor.execute(sql, args)

字符串
你可以看到args中变量的数量与查询所期望的数量不同。
但不管怎样,这些事情不是这样做的,如果有一天你决定增加或减少字段的数量,你会怎么做?

展开查看全部

相关问题