MySQL插入包含单引号和双引号的数据,给出语法错误
Posted
技术标签:
【中文标题】MySQL插入包含单引号和双引号的数据,给出语法错误【英文标题】:MySQL insert data containing single and double quotes giving a syntax error 【发布时间】:2012-05-17 01:41:36 【问题描述】:我在将数据从一个 DB 提取到另一个 DB 的工具中使用以下插入语句。
INSERT INTO act_vulnerabilities_internal_test (device_type, ip_address, user_tag,
repositoryID, severity, pluginID, pluginName, pluginText)
VALUES ("@Data.device_type~", "@Data.ip_address~", "@Data.user_tag~",
"@Data.repositoryID~", "@Data.severity~", "@Data.pluginID~", "@Data.pluginName~",
@Data.pluginText~)
错误信息:您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 3 行的 '\nSynopsis :\n\nIt is possible to retrieve file backups from the remote web serv' 附近使用正确的语法
我试图从其中一列中提取的数据中有很多单引号和双引号(这是从专有工具中提取的,我无法编辑数据)。给我问题的专栏是名为 pluginText 的专栏。有没有办法让数据库忽略行中包含的 ' 和 "?
我需要 mysql_real_escape_string 才能正确执行此操作吗?
【问题讨论】:
【参考方案1】:更新:使用QUOTE()
function。
原答案:
请试试这个:
INSERT INTO
...
VALUES (
...
, REPLACE(@Data.pluginText, '"', '\"')
)
或者如果你有单个 和 双引号:
INSERT INTO
...
VALUES (
...
, REPLACE(REPLACE(@Data.pluginText, '"', '\"'), "'", "\'")
)
你可以阅读更多关于它here
【讨论】:
我都试过了,收到了类似的错误:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在运行此扫描时未启用“彻底测试”附近使用的正确语法。\n\nCVE : CVE-99,第 3 行我是否还需要删除. \ - 和 : 符号? @user1208132 你能给我造成问题的文本,以便我可以测试一下吗? 这里是它的格式,必须保留:运行此扫描时\n未启用“全面测试”。\n\nCVE:CVE-2012-2100, 有人对此有意见吗? @user1208132 抱歉,我忘记了这个问题。编辑了我的答案,现在只有一个反斜杠。不知道我是怎么把其中两个混在一起的。现在它应该可以工作了。还添加了一个链接,您可以在其中找到更多信息。【参考方案2】:我们需要使用addslashes($text)
函数来转义所有的单引号和双引号,NULL等,让MYSQL可以理解。
Here is some information on that.
【讨论】:
以上是关于MySQL插入包含单引号和双引号的数据,给出语法错误的主要内容,如果未能解决你的问题,请参考以下文章