在mysql中使用nodejs和express的ejs模板引擎删除和更新一条记录。

问题描述 投票:0回答:1

我刚刚开始我的web开发之旅,遇到了一些问题。我试图使用以下代码删除和更新mysql中的任何记录。

    //deleting a record
Router.get('/delete', (req, res, next)=> {
  db.query('DELETE FROM student WHERE student_id = ?',req.body.student_id, (err,rs)=>{
    if(err) throw err;
    else {
      res.redirect('showStudents');
    }
  });
});


//editing a record
Router.get('/edit',(req, res, next)=>{
  db.query('SELECT * FROM student WHERE `student_id`=?',[req.body], (err,rs)=>{
    res.render('form',{Students: rs})
  });
});
Router.post('/edit',(req, res, next)=>{
  var params=[
    req.body,
    req.query.student_id
  ]
  db.query('UPDATE student SET? WHERE student_id =?',params, (err,rs)=>{
    if(!err)
    res.redirect('showStudents')
    else {
      console.log(err);
    }
  });
});

这是在ejs中的代码安排。

 <a href="/delete?student_id= <%= student.student_id %>" onClick=" return confirm ('Are you sure you?')">Delete</a>
<a href="/edit?student_id =<%= student.student_id %>">Edit</a>

运行删除代码,我得到下面这个错误。用编辑代码,没有任何变化。

{ code: 'ER_PARSE_ERROR', errno: 1064, sqlMessage: "你的SQL语法有错误,请检查你的MySQL服务器版本对应的手册,以了解在第1行'?'附近应该使用的正确语法", sqlState: '42000', index: 0, sql: 'DELETE FROM student WHERE student_id = ?'}。

请帮助我。

javascript mysql node.js express ejs
1个回答
0
投票

由于你是通过url中的查询字符串发送参数,你需要用req.query来访问它们,例如: var student_id= req.query.student_id; (当参数是通过表单发送时,使用req.body)

© www.soinside.com 2019 - 2024. All rights reserved.