Javascript 如何分解JSON对象以插入MySQL表? 总结
我从这里得到了一些JSON:Javascript 如何分解JSON对象以插入MySQL表? 总结,javascript,mysql,node.js,json,Javascript,Mysql,Node.js,Json,我从这里得到了一些JSON: // Now Get Only New Listings finalArray = _.difference(existingResults, items); 我需要将这些值插入其中: 输入的某些数据无法填充所有列。那样的话,我想把它们留白 下面是数据的样子(可能是许多数据之一) 所以我需要弄清楚如何遍历每个JSON对象,并插入到正确的列中 var insertQuery = 'Your code here! :) '; 我想这个查询需要在某个地方进行循环
// Now Get Only New Listings
finalArray = _.difference(existingResults, items);
我需要将这些值插入其中:
输入的某些数据无法填充所有列。那样的话,我想把它们留白
下面是数据的样子(可能是许多数据之一)
所以我需要弄清楚如何遍历每个JSON对象,并插入到正确的列中
var insertQuery = 'Your code here! :) ';
我想这个查询需要在某个地方进行循环?还是一个大的insert语句
任何建议或代码都将不胜感激。谢谢
注
使用:NodeJS和JawsDB-MySQL(如果信息很重要)只有在负载没有任何嵌套对象的情况下,以下方法才会起作用。我使用
connection.escape()
删除JSON中的任何可注入脚本,以防止SQL注入攻击。我希望您已经安装了node.js的连接器
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
const payload = {
price: '$6,000',
title: '1999 Jeep Wrangler SE Sport Utility 2D',
location: 'Auburndale, Florida',
miles: '12K miles',
imgUrl: 'http://www.example.com/pic.jpg',
itemURL: '/products/item/36427/'
}
const map = new Map(Object.entries(payload));
const keys = map.keys();
const values = map.values();
const insertQuery = `
INSERT INTO TABLE_NAME (${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)})
VALUES (${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)});
`
connection.query(insertQuery, function (error, results, fields) {
if (error) throw error;
// ...
});
console.log(insertQuery);
只有当负载没有任何嵌套对象时,以下方法才会起作用。我使用
connection.escape()
删除JSON中的任何可注入脚本,以防止SQL注入攻击。我希望您已经安装了node.js的连接器
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
const payload = {
price: '$6,000',
title: '1999 Jeep Wrangler SE Sport Utility 2D',
location: 'Auburndale, Florida',
miles: '12K miles',
imgUrl: 'http://www.example.com/pic.jpg',
itemURL: '/products/item/36427/'
}
const map = new Map(Object.entries(payload));
const keys = map.keys();
const values = map.values();
const insertQuery = `
INSERT INTO TABLE_NAME (${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)},
${connection.escape(keys.next().value)})
VALUES (${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)},
${connection.escape(values.next().value)});
`
connection.query(insertQuery, function (error, results, fields) {
if (error) throw error;
// ...
});
console.log(insertQuery);
以这种方式构建查询允许SQL注入攻击。为什么不使用专用连接器正确生成查询?100%同意您的意见。。。我不知道@John S.为什么想要这样一种方法来创建插入查询..我希望他可能知道他在做什么..我建议你编辑答案,至少添加一些评论,说明这样做容易受到攻击。在目前的形式下,你正在教如何被黑客攻击。也许我在这方面做错了。这就是我正在做的。。。我正在抓取一个页面,并形成一个包含所有数据的JSON对象。我使用Heroku作为服务器,所以我无法写回JSON文件(Dynos显然处于休眠状态或导致更改无法持久化的原因)。无论如何,我创建了一个mySQL数据库来保存我的数据。所以我想我应该找回这个JSON,并将它插入数据库。我当然不想让自己受到SQL注入攻击。我只想获取我的JSON对象并将其插入数据库中的适当列中。“我的帖子写对了吗?”约翰说。使用适当的转义函数,每次你必须处理“不可信”的输入——这意味着你不能保证它是正确的,它超出了你的代码范围,你无法控制它。请看这里的更多示例,了解如何使用mysql驱动程序完成此操作,并且永远不要对不可信的输入使用简单的字符串连接。以这种方式构建查询允许SQL注入攻击。为什么不使用专用连接器正确生成查询?100%同意您的意见。。。我不知道@John S.为什么想要这样一种方法来创建插入查询..我希望他可能知道他在做什么..我建议你编辑答案,至少添加一些评论,说明这样做容易受到攻击。在目前的形式下,你正在教如何被黑客攻击。也许我在这方面做错了。这就是我正在做的。。。我正在抓取一个页面,并形成一个包含所有数据的JSON对象。我使用Heroku作为服务器,所以我无法回写JSON文件(Dynos显然是休眠的,或者是一些导致更改不持久的东西)。无论如何,我创建了一个mySQL数据库来保存我的数据。所以我想我应该找回这个JSON,并将它插入数据库。我当然不想让自己受到SQL注入攻击。我只想获取我的JSON对象并将其插入数据库中的适当列中。“我的帖子写对了吗?”约翰说。使用适当的转义函数,每次你必须处理“不可信”的输入——这意味着你不能保证它是正确的,它超出了你的代码范围,你无法控制它。请看这里的更多示例,了解如何使用mysql驱动程序,以及如何对不可信的输入使用简单的字符串连接。