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

Ben*_*Ben 5 mysql quotes insert

我在一种将数据从一个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~)
Run Code Online (Sandbox Code Playgroud)

错误消息:您的SQL语法有错误。检查与您的MySQL服务器版本相对应的手册,以找到在'\ nSynopsis:\ n \ n附近可以使用的正确语法:在第3行可以从远程Web serv检索文件备份

我试图从其中一列中提取的数据中有很多单引号和双引号(这是从专有工具中提取的,我无法编辑数据)。给我带来问题的那一列是一个名为pluginText的列。有没有一种方法可以使数据库忽略行中包含的'和'?

我需要正确地执行mysql_real_escape_string吗?

fan*_*nts 5

更新:用QUOTE()功能来做

原始答案:

请尝试以下方法:

INSERT INTO 
...
VALUES (
...
, REPLACE(@Data.pluginText, '"', '\"')
)
Run Code Online (Sandbox Code Playgroud)

或如果其中有单引号双引号:

INSERT INTO 
...
VALUES (
...
, REPLACE(REPLACE(@Data.pluginText, '"', '\"'), "'", "\'")
)
Run Code Online (Sandbox Code Playgroud)

您可以在这里了解更多信息


小智 5

我们需要使用addslashes($text)函数来转义所有的单引号和双引号、NULL等,让MYSQL可以理解。 这里有一些关于这方面的信息。