gpt4 book ai didi

mysql - 用 HTML 文本(包含 ' and ")更新列(TEXT)

转载 作者:行者123 更新时间:2023-11-29 07:18:03 26 4
gpt4 key购买 nike

表 (myTAB) 在 TEXT NOT NULL 中有一个名为 HTML 格式的列;

PRIMARY 列和其他列已经存在并且正确,只需要填写 HTML 列,因此我尝试了:

... 
TB_NAME = 'myTAB'
open_html = open(f.html, 'r')
content = open_html.read()
...
sql = "UPDATE "+ TB_NAME + " SET HTML = " + content
cursor.execute(sql)

我总是得到:

error 1064(42000): error in SQL syntax...

我想这可能与 html 文件中已经包含 ' 或 "的符号有关;

我也试过:

sql = ' UPDTAE %s SET HTML = %s '
val = (TB_NAME, content)
cursor.execute(sql,val)

同样的错误,也尝试使用 str(content) ,没有成功。


顺便说一句:如果表是空的插入,没问题!例如:

sql = 'INSERT IGNORE INTO ' + TB_NAME + '(c0,c1,c2,HTML) VALUES (%s, %s, %s, %s)'
val.append(content)
cursor.execute(sql, val)

最佳答案

你尝试过:

sql =  "UPDATE "+ TB_NAME + " SET HTML = " + content
cursor.execute(sql)`

首先,您缺少围绕内容的单引号。但是由于您的内容可能包含嵌入的单引号,这仍然行不通。此外,此表达式会使您暴露于 SQL 注入(inject)。


你也试过:

sql = ' UPDATE %s SET HTML = %s '
val = (TB_NAME, content)
cursor.execute(sql,val)

您正确地将 html 内容作为参数传递。但这行不通,因为表名无法参数化。


我建议连接表名并将 html 内容作为参数传递:

sql = ' UPDATE ' + TB_NAME + ' SET HTML = %s '
val = [content] # instead of (content)
cursor.execute(sql,val)

关于mysql - 用 HTML 文本(包含 ' and ")更新列(TEXT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58139947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com