Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何分解JSON对象以插入MySQL表? 总结_Javascript_Mysql_Node.js_Json - Fatal编程技术网

Javascript 如何分解JSON对象以插入MySQL表? 总结

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! :) '; 我想这个查询需要在某个地方进行循环

我从这里得到了一些JSON:

// 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驱动程序,以及如何对不可信的输入使用简单的字符串连接。