【发布时间】:2020-11-04 22:40:43
【问题描述】:
这是我写的代码
def edititem():
edit_code = int(input("Enter the product code of the item you would like to edit:"))
edit_cat = input("Enter the category of the item you would like to edit:")
edit_val = int(input("Enter the new value"))
edit = """UPDATE products SET %s = %s where prod_code = %s"""
cur.execute(edit,(edit_cat,edit_val,edit_code,))
connector.commit()
这是我得到的错误:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' prod_code' = 1 where prod_code = 1231' at line 1
我无法弄清楚究竟是什么错误,这将是一个很大的帮助。在此先感谢。
【问题讨论】:
-
据我回忆,您不能将对象名称(列名称)传递到
%s替换逻辑中。格式化程序与值隔离。 -
那么如何将列名传递给查询?
-
您可以将语句创建为字符串,并使用字符串格式动态添加表名。请注意可能的注入机会;如果这适用于您的工作环境。
-
@Zeck 问题解决了吗?
标签: python mysql-connector-python