【问题标题】:NodeJs and MySQL ER_BAD_FIELD_ERRORNodeJs 和 MySQL ER_BAD_FIELD_ERROR
【发布时间】:2019-04-20 02:19:24
【问题描述】:

我有问题需要帮助。所以问题是我有一条路线来显示我的学生表的所有行并且它可以工作,但是知道当我尝试下面的代码来搜索我得到的特定 student_id 时:

“查询用户失败:错误:ER_BAD_FIELD_ERROR: 'where 子句'中的未知列'undefined'”

我已将 queryString 尝试为: 我的表有 student_id、firstName、lastName、checkIn 和 checkOut 作为列。 它们都是 VARCHARS。

queryString = SELECT * FROM students WHERE student_id = ${id}

queryString = SELECT * FROM students WHERE student_id = ? 然后 getConnection().query(queryString, [id], (err, rows, fields) => {

但我遇到了同样的错误,非常感谢您的帮助。 在我所有不同的搜索路线按预期在 html 中很好地显示数据之后,我的问题将是实施,但我对此并不陌生,我找不到任何可以帮助我解决这个问题的东西。我希望它显示为一个列表,就像 MySQL 显示它一样。那可能吗?我使用 ejs 视图引擎作为我的 html 页面。

// Route to search by id
router.get("/searchById", (req, res) => {

  const id = req.body.id

  queryString = `SELECT * FROM students WHERE student_id = ${id}`

  getConnection().query(queryString, (err, rows, fields) => {

    // If error occures 
    if(err) {
      console.log("Failed to query for users: " + err)
      res.sendStatus(500)
      return
    } 

    if(rows) {
      console.log(rows)
       console.log("We fetched Students successfully")
        res.json(rows)
    }

  })
})

【问题讨论】:

  • 您确定req.body.id 已定义吗?试试console.log(req.body.id),输出是什么?
  • 永远不要直接在 SQL 查询中使用用户提供的数据,例如 req.body.id。确保数据gets escaped properly.
  • 您是否尝试像 where 'student_id' = 那样为字段名称添加引号,并在整个查询中使用双引号
  • 好的,我发现 req.body.id 不起作用,因为表单是 GET 而不是 POST。即使我没有发布任何内容,也可以使用 POST 吗?
  • 嗨@Steven,你能更新一下关于你的发现的问题吗?

标签: mysql node.js express ejs


【解决方案1】:

对于 GET 请求,您应该使用 req.query.id 对于发布请求,您应该使用req.body.id 在您的代码中,您使用了 get 请求并尝试获取 req.body.id

【讨论】:

    猜你喜欢
    • 2020-03-29
    • 2017-10-21
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多