为什么在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,请发布你的错误
- 在node.js上访问快速应用程序控制器中的app.set设置
- 在Express / Node中使用sendFile时发生随机'ECONNABORTED'错误
- 无法使用node.js v0.12.7,express 4,body-parser,bootstrap 3检索POST数据
- 将图像保存为base64,并使用path返回
- 球员运动对angular线 – 太快|| 的NodeJS
- req.session.passport为空:req.user未定义
- 使用Express JS .all()方法:检测哪个VERB被实际使用
- node.js – 不能让mongodb工作,可能安装错了?
- 如何在dynamicHepler中渲染一个局部?