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

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

当我查询MySQL没有的数据时,它显示错误。 那正是我期待的。 但是,如果我在传递的数据上使用connection.escape(),即使它们假设是错误的,它也会像没有发生任何事情一样继续执行代码。 为什么?

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

下面是我所期望的。 我通过POST传递的ID不在数据库中,因此控制台日志logging:错误

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()function。 现在运行时,即使数据不在数据库中,控制台也会loggingSUCCESS。

 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 } 

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

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