MySQL插入包含单引号和双引号的数据,给出语法错误

时间:2012-05-08 14:43:40

标签: mysql insert quotes

我在一个工具中使用以下插入语句,将数据从一个数据库拉到另一个数据库。

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服务器版本对应的手册,以便在'\ nSynopsis附近使用正确的语法:\ n \ n可以从第3行的远程Web服务检索文件备份

我试图从其中一个列中提取的数据中有很多单引号和双引号(这是从专有工具中提取的,我无法编辑数据)。给我问题的专栏是名为pluginText的专栏。有没有办法让db忽略行中包含的'和'?

mysql_real_escape_string我需要做些什么呢?

2 个答案:

答案 0 :(得分:4)

更新:使用QUOTE() function执行此操作。

原始答案:

请试试这个:

INSERT INTO 
...
VALUES (
...
, REPLACE(@Data.pluginText, '"', '\"')
)

或者如果你有单个双引号:

INSERT INTO 
...
VALUES (
...
, REPLACE(REPLACE(@Data.pluginText, '"', '\"'), "'", "\'")
)

您可以阅读更多相关信息here

答案 1 :(得分:3)

我们需要使用addslashes($text)函数来转义所有单引号和双引号,NULL等,以使MYSQL可以理解。 Here is some information on that.