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插入包含单引号和双引号的数据,给出语法错误的主要内容,如果未能解决你的问题,请参考以下文章

向MySQL数据库插入单引号或双引号

在 MySQL 表中同时插入和更新转义字符、单引号和双引号

mysql怎么样才能插入单引号

如何插入包含单引号的字符串

如何想数据库中插入单引号急

sql语句中啥时候用单引号啥时候用双引号?如图中的红为啥用双引号?