【发布时间】:2021-01-09 22:48:14
【问题描述】:
下图显示了一个代码sn-p:
query="insert into mytable values ('%s','%s','%s','%s',%s,'%s')"
value=(str(cr),str(cs),str(srv),str(cl),recipe["total_time"],image,name)
print(name)
cursor.execute(query%value)
mydb.commit()
我添加了一个 print(name) 语句来显示“name”变量的确切含义。 (它是一个字符串)。在运行时,我收到一个错误:
“paneer ki sabji | ..”是名称的值。我将“name”中的数据插入到 mysql 表中,在“nvarchar”类型的列下。
错误是因为特殊字符“|”吗?如果是,我们如何解决它,为什么“nvarchar”没有处理它?
【问题讨论】:
-
停止使用字符串格式来构建查询。我厌倦了这样说;它容易出错并且对 SQL 注入开放。查找参数化
-
如果你没有发布图片,我可以给你固定的代码,顺便说一句。这将是复制/粘贴并仅对其进行编辑的情况。但是您没有将代码作为文本提供
-
@roganjosh 如果是这样的话,我会把它写成文本。
-
对于所有问题,您都应该始终将代码作为文本发布。否则,您会期望人们再次为您输入所有内容(没有充分理由)
-
MySQL 不应该有特殊字符的问题,是什么让您认为是导致问题的名称?其他字段的格式是什么,尤其是recipe["total time"]和image?