Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用NodeJS从MySQL中删除记录_Javascript_Html_Mysql_Node.js - Fatal编程技术网

Javascript 使用NodeJS从MySQL中删除记录

Javascript 使用NodeJS从MySQL中删除记录,javascript,html,mysql,node.js,Javascript,Html,Mysql,Node.js,我在尝试从数据库中删除记录时遇到问题。 我收到了这个错误:您的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 = ?&q

我在尝试从数据库中删除记录时遇到问题。 我收到了这个错误:您的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" >
              

您只传递带有占位符的语句,而不传递占位符的值

从文件中:

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

connection.query(sql,[id],(错误、结果、字段)=>{
如果(错误)
返回控制台错误(错误消息);
console.log('已删除行:',results.affectedRows);
res.redirect('/admin/painting');
});

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

如果您不太喜欢这种样式,那么值得检查并使用承诺驱动的代码。它使错误处理变得容易得多。例如,您在这里做得不对,
if(error)
子句中的
return
是错误的,它无法调用
next()
,只是让请求挂起。提示:如果使用占位符值,则必须同时提供值。