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

标签 mysql node.js express

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

当我向 MySQL 查询它没有的数据时,它显示错误。这就是我所期待的。但是,如果我对通过的数据使用 connection.escape(),即使假定存在错误,它也会像什么都没发生一样继续执行代码。 为什么?

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

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

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 }

最佳答案

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

在您的第一个示例中,字符串连接的结果可能是无效的 sql,请发布您遇到的错误

关于mysql - 为什么在 Node.js 中使用 escape() 时 MySQL 不显示错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837131/

相关文章:

php - 在mysql中按状态值1排序和按名称asc记录排序

mysql - 从相关表中插入具有给定值和值的多行

c# - MySQL 的连接字符串(asp.net 中的 C#)

javascript - vs code IntelliSense 不适用于 webpack 包

node.js - 为什么在 Mac OSX El Capitan 上 node-gyp 重建失败

node.js - express.json() 与正文解析器

mysql - 如何在命令行中使用mysql使id字段自动递增?

node.js - 连接reactjs和nodejs

javascript - 如何在 NodeJS/Express API 中进行多个异步调用

javascript - 带有错误处理功能的外部扭曲函数