JS解析到MySQL时引用冲突

Posted

技术标签:

【中文标题】JS解析到MySQL时引用冲突【英文标题】:Quote conflict in JS when parsing to MySQL 【发布时间】:2020-12-24 13:01:28 【问题描述】:

所以我有这个 JSON 对象,我需要将其解析为字符串并使用 javascript 发送到我的 SQL 数据库。节点包是'mysql'。 JSON 对象是具有可变数量键的对象数组,如下所示:


    array:
        [
            "title": "Lorem ipsum dolor sit amet",
            "body": "Lorem ipsum dolor sit amet: <a href=\ "https:\/\/www.google.com\/">'Lorem ipsum dolor sit amet, consectetur adipiscing elit'<\/a>
                    The future of aviation doesn't necessarily involve existing aircraft..."
            
        ],
        [...],
        [...]

我使用以下方法解析它:

let values = [];
let elements = [];
for (let i = 0; i < array.length; i++) 
    values = [];
    for (let key in array[i]) 
        values.push(`"$array[i][key]"`)
    
    elements.push(`($values.join(', '))`)

// pushing elements and columns into an sql query 
let sql = `INSERT INTO table (columns) VALUES $elements.join(', ')`

当我尝试查询字符串时,它返回以下错误:

code: 'ER_PARSE_ERROR',
errno: 1064,
sqlMessage: "You have an error in your SQL syntax; check the manual ...",
sqlState: '42000',

我责怪引号和撇号,因为这种解析方法适用于我拥有的另一个 JSON 对象。 我该如何解决这个问题?

【问题讨论】:

你是对的,我很抱歉。我希望我可以公开发布原始 JSON 文件,但出于隐私原因,我不得不替换它。 谢谢!但是在将对象转换为字符串后如何解析它?我真的不明白你的解决方案。我使用 JSON 对象来提取多个值,因为我必须将“title”和“body”键作为表列并将它们的值作为表值。 【参考方案1】:

您应该使用JSON.stringify() 方法处理您的json 对象的序列化。您无需为此编写自己的函数

类似地,反序列化使用 JSON.parse() 将您的字符串转换回 JSON 对象

【讨论】:

以上是关于JS解析到MySQL时引用冲突的主要内容,如果未能解决你的问题,请参考以下文章

在同一页面引用多个js效果相互冲突怎么解决

引用多个jq插件造成冲突时

前端常见问题及引起原因

作用域,作用域链,垃圾收集,js解析

20180909 解析JS Cookie的设置,获取和检索

解决html-webpack-plugin和html-loader冲突问题,支持嵌套引用