在VALID查询中,nodejs mysql ER_PARSE_ERROR

所以现在我已经失去了大约2小时,并希望得到一些帮助。 我已经尝试使用mysql的lib与nodejs和一个简单的查询,如SELECT * FROM table; 工作,但现在我试图构build一个真正的查询来更新我的数据库不起作用。

我已经使用在线validation工具,并检出。

  var mysql = require('mysql'); var request = require('request'); request.get('http://localhost:8080/dump/asda.dump', function (error, response, body) { if (!error && response.statusCode == 200) { var data =JSON.parse(body); var products = data['products'][0]; var myquery = "INSERT INTO `products2` ("; var midquery = ") VALUES ("; for (var k in products) { if (typeof products[k] === 'number') var v = products[k]; else if (typeof products[k] === 'string') var v = "\'" + products[k]+ "\'"; else if (typeof products[k] === 'boolean') var v = products[k]; else continue; myquery = myquery + "`" + k + "`,"; midquery = midquery + v + ","; } myquery = myquery.slice(0,-1); midquery = midquery.slice(0, -1); print(myquery + midquery + ")"); connection.connect(); connection.query(myquery, function (err, rows, fields) { if (!err) console.log(rows); else console.log(err); }); connection.end(); } }); 

我已经尝试了与蜱虫的版本,没有蜱没有一个工作。

可能的原因可能是

  • 太长的查询。 也许一些内部字符限制execked?

  • 不受欢迎的angular色 我很确定那里有不less克罗地亚语的ćčćš。 我如何支持?

  • 不正当的逃跑(虽然对我来说似乎没问题)。

  • 我有'代码'作为表列。 我已经检查过,它不是mysql中的保留关键字,但它在MySQL Workbench中是蓝色的,所以它可能会以某种方式破坏它。

我得到的是:

 { [Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1] code: 'ER_PARSE_ERROR', errno: 1064, sqlState: '42000', index: 0 } 

每当在查询内部使用数据库实体(如表名或数据库variables)时,您应该尝试使用这些记号。 至于你的查询,只有myquery是作为你的数据库语句进入函数,它不包含整个查询。 因此,由于不完整的查询和不正确的语法,你会得到一个错误(因为它已经不完整)。 您的打印语句将因您使用的连接而正确打印。 如果能够将连接的查询string保存在一个variables中,例如:

  var new_query=myquery + midquery + ")"; 

然后用它作为

  connection.query(new_query, function (err, rows, fields) { if (!err) console.log(rows); else console.log(err); }); 

我认为你的查询应该工作。 谢谢…!