使用node.js中的where子句选择查询-MySQL?

DDD

在此API中,我使用select查询和folderid's与要提取的记录匹配的In where子句来获取记录。req.body.folderid is 1024wioqdwwb但在文件夹表中,folderid is 1024以便提取记录,但我不希望该记录。folderid datatype is int

app.post('/getFolderDetails',function(req,res){
  console.log(req.body.folderid); //1024wioqdwwb

  connection.query("SELECT folderid,folderName FROM folder WHERE folderid = ?", [req.body.folderid] , function (error, results, fields) {
    console.log(results); // [ RowDataPacket { folderid: 1024, folderName :'folder-1' } ]
    res.send({  
      'status':'1',
      'success':'true',
      'payload': results,
   });      
 });
})

文件夹表

folderid    folderName
 1024         folder-1
 1025         folder-2
 1026         folder-3
 1027         folder-4
爱迪生

查询仍然会返回一行,因为它看到字符串1024wioqdwwb并将其与数据库中的int值进行比较时会发生什么

因为字符串恰好以数字开头,所以它只是简单地获取字符串中的所有字符,直到第一个非整数字符,并将其用作比较值。

换句话说,它首先将字符串截断为'1024',然后将其强制转换为整数1024,然后将其与表中的值进行比较。当然,课程10241024中的ID相匹配,因此它仍返回结果。

您说您不希望返回该行...好吧,但是为什么要允许这样的废话开始呢?我认为问题不在于查询,而在于(缺乏)对应用程序中输入值的验证。那是您需要更改代码的地方。不幸的是,我们看不到该代码,因此无法为您提供具体的建议,但这是我的建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章