为什么MySQL在Node.js中使用escape()时没有显示错误?

时间:2015-04-24 01:25:28

标签: mysql node.js express

我在我的Node.js / Express应用程序中使用mysql模块。

当我向MySQL查询它没有的数据时,它会显示错误。这就是我所期待的。但是如果我对通过的数据使用connection.escape(),即使假设是一个错误,它的行为就像没有发生任何事情并继续沿着代码。 为什么?

以下是我的代码。请记住,我传递的数据不存在。我期待这个错误,我希望它发生。

以下是我的期望。我通过POST传递的id不在数据库中,因此控制台记录:ERROR

app.post('/check', function(req,res) {

    connection.query('SELECT * FROM category where id="' + req.body.id + '"', function(err,rows,fields) {

        if(err) { 
            console.log('ERROR'); 
        } else {
            console.log('SUCCESS');
            }           


    });

});

下面我添加了connection.escape()功能。现在,当它运行时,即使数据不在数据库中,它也会记录SUCCESS。

app.post('/check', function(req,res) {

    connection.query('SELECT * FROM category where id=' + connection.escape(req.body.id) + '', function(err,rows,fields) {

        if(err) { 
            console.log('ERROR'); 
        } else {
            console.log('SUCCESS');
            }           


    });

});

为什么会这样?

这是我运行第一个代码示例时遇到的错误。第二个例子我得到任何错误,直到我到达一个与查询相关的空属性。由于没有结果,并且当假设发生错误时我无法停止应用程序

[Error: ER_BAD_FIELD_ERROR: Unknown column 'fsaf' in 'where clause']
 code: 'ER_BAD_FIELD_ERROR',
 errno: 1054,
 sqlState: '42S22',
 index: 0 }

1 个答案:

答案 0 :(得分:2)

因为没有错误 - 您的查询有效并且已成功完成。您收到了空结果集,这是预期的有效行为

在你的第一个例子中,字符串连接的结果可能是无效的sql,请发布你有的错误