首页 > 解决方案 > 使用 NodeJS 从 MySQL 中删除记录

问题描述

我在尝试从数据库中删除记录时遇到问题。我收到此错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“?”附近使用的正确语法 在第 1 行

app.post('/delete',function(req,res,next){
    var id= req.body.painting_id;
    console.log(req.body.painting_id);
    let sql = "DELETE FROM Paintings WHERE id = ?";

    connection.query(sql, (error, results, fields) => {
      if (error)
        return console.error(error.message);

      console.log('Deleted Row(s):', results.affectedRows);
        res.redirect('/admin/painting');
    });
})

这是我要删除的前端部分

<form action="/delete" method="POST">
     <input type="text" name="painting_id" id="painting_id" >
     <input type="text" name="painting_title" id="painting_title" >
              

标签: javascripthtmlmysqlnode.js

解决方案


您只传递带有占位符的语句,但没有传递它的值。

从文档:https ://www.npmjs.com/package/mysql#escaping-query-values

正确的方法应该是为语句中的每个占位符添加值,如下所示:

connection.query(sql, [id], (error, results, fields) => {
    if (error)
    return console.error(error.message);

    console.log('Deleted Row(s):', results.affectedRows);
    res.redirect('/admin/painting');
});

请注意,无论语句中有多少值,它都必须是一个数组。


推荐阅读