繁体   English   中英

js的sql语法错误

[英]sql syntax error with nodejs

我正在尝试从插入数据库的API中提取结果。 程序运行时返回SQL错误。 似乎我没有以正确的语法发送此消息,而且我似乎无法做到这一点。 有一个更好的方法吗?

var request = require('request');
var mysql = require('mysql');
var replace = require ('Regexp')
var url = 'https://api.nicehash.com/api?method=stats.provider.workers&addr=3Hwm6i8aefzHhJTbEGtSJeR6tZCJXqY7EN';

//connect to database
var con = mysql.createConnection({
    host: 'localhost',
    user: 'xxxxx',
    password: 'xxxxx',
    database: 'xxxxx',
    table: 'workerstats'
});

con.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");
});


const requestHandler = (request, response) => {  
    response.end(workerstats)
}

request.get({
    url: url,
    json: true,
    headers: {'User-Agent': 'request'}
}, (err, res, data) => {
    if (err) {
        console.log('Error:', err);
    } 
    else if (res.statusCode !== 200) 
    {
        console.log('Status:', res.statusCode);
    } 
    else {(!err && data && data.result && data.result.workers)

        var workerstats = JSON.stringify(data.result.workers);
        var wsclean = workerstats.replace(/[&\/\\#+()$~%'*?<>{}]/g,'')
                                 .replace(/"a":/g,'');
    };

    console.log(wsclean);

    var sql = "INSERT INTO 'workerstats' (workers, accepted, uptime, xnsub, difficulty, zone, algo) ?", wsclean;

    con.query(sql, [workerstats], function (err, result) {
        if (err) throw err;

        console.log("Number of records inserted: " + result.affectedRows);
    }
    );

})

编辑:好的,所以在经过数小时的修补之后,我“认为”我已经取得了进步,但是那可笑的A:又让我得到了。 将其视为对象,SQL拒绝了它。 尽管我以为(尽管显然不正确),但我将其转换为字符串。 这是修改后的代码。 请原谅格式,播放效果不好。

request.get({
url: url,
json: true,
headers: { 'User-Agent': 'request' }
}, (err, res, data) => {
if (err) {
    console.log('Error:', err);
}
else if (res.statusCode !== 200) {
    console.log('Status:', res.statusCode);
}
else {
    (!err && data && data.result)

    var data = JSON.parse(data.result);
    var responseJson = JSON.stringify(data.response);
    var query = connection.query('INSERT INTO table SET column=?', responseJson, function (err, result) {
        if (err) throw err;
        console.log('data inserted');
    });

   }
});

它返回以下错误:

undefined:1 [object Object] SyntaxError:位置1的JSON中的意外令牌o

太棒了 所以我在某个地方做了一些愚蠢或不当的事情。 在原始API中,对象Object的显示如下:{“ a”:“ 158.01”}-当我以为已经做到了,如何将其转换为字符串? 我还想完全消除“ a”和“:”,因为我不确定如何将其处理为SQL及其不需要的信息。

在request选项中设置json: true时,您不再需要执行JSON.parse(data.result) ,您可以直接将数据作为对象访问。 因此发生错误,因为JSON.parse({ a: 1})调用toString方法,并且结果[object Object]其无效的JSON。

注意:您将data.result.workers转换为字符串。 我认为您应该将其作为数组工作。

con.query(sql, data.result.workers, function (err, result) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM