【发布时间】:2015-07-11 05:53:53
【问题描述】:
我已经尝试将 mysql lib 与 nodejs 一起使用,并且像 SELECT * FROM table; 这样的简单查询可以工作,但现在我已经尝试构建一个真正的查询来更新我的数据库,但它不起作用。
我使用了一个在线验证工具,它可以检查出来。
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();
}
});
我已经尝试了带有刻度和不带有刻度的版本,它们都不起作用。
可能的原因
-
查询过长。也许超出了一些内部字符限制?
-
不支持的字符。我很确定我有很多克罗地亚语ćčćš。我该如何支持?
-
不正确的 ' " 转义(虽然在我看来没问题)。
-
我将“代码”作为表格列。我已经检查过了,它不是 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 }
【问题讨论】:
-
我看到你在哪里打印
myquery + midquery + ")",它将打印整个连接查询,但只有myquery被传递给connection.query方法,这只是整个查询的一部分。跨度> -
谢谢。由于问题与标题无关,我现在应该删除我的帖子吗?