我有一个大的JSON对象,我从文件中读取文本,将其解析为JSON并以blob数据类型存储在我的mysql数据库中。
当我在mysql控制台中SELECT * FROM *table*
时,我在表中看到[object Object]
并将JSON作为字符串上传时出错。
ER_PARSE_ERROR:您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 在'1000GenomeFreq'附近使用:“”,“dbsnpFreq”:“”,
“labValidationInfo”:null,第1行的“yesFrequ”
如何使用node.js将JSON上传到MySQL数据库?
var id=0;
var json={};
var name,des;
io.on('connection', function(socket){
socket.on('username', function(un){
console.log("Username: "+un);
var l=un.length;
console.log(l);
json=JSON.parse(un);
name=json.label.name;
des=json.label.description;
console.log(name);
switch(name){
case 'VUS_I':id=3;
break;
case 'VUS_II':id=4;
break;
case 'VUS_III':id=5;
break;
case 'VUS_IV':id=6;
break;
}
connection.query('insert into variant_card(data,effectID)values("'+json+'",'+id+')', function(err,result) {
if(err) {
console.log('adsfdas'+err);
socket.emit('wru');
} else {
if(result==false){
console.log("Error uploading file");
socket.emit('wru');
} else {
console.log("File uploaded into database");
socket.emit('done');
}
}
});
//socket.emit('pwd');
});
});
JSON文件的一部分是
{
"1000GenomeFreq":"",
"dbsnpFreq":"",
"labValidationInfo":null,
"yesFrequency":1,
"functionallyValidated":false,
"mutationType":"changeThis",
"conservationScores":null,
"isDominantSegregating":true,
"literatureKbCount":0,
"exomeServerFreq":"",
"rsID":"",
"notations":[{
"nmTranscripts":["NM_033507"],
...
答案 0 :(得分:2)
这就是为什么你不应该直接将值连接到查询中(SQL注入攻击)。
你应该做的是使用占位符:
connection.query('insert into variant_card set ?',
{ data: JSON.stringify(json), effectID: id },
function(err,result) {
// ...
});