【问题标题】:Executing UPDATE query in node.js mysql not working在node.js mysql中执行UPDATE查询不起作用
【发布时间】:2023-03-25 11:30:02
【问题描述】:

我是 node.js 的新手(以及与之结合的 mysql),并试图根据请求参数和请求正文更新我的数据库。我的文件开头是这样的:

var express = require('express');
var bodyParser = require('body-parser');
var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'm3ttulat0r',
    debug: true
});
var app = express();
app.use(bodyParser.json());

我的请求如下所示:

http://localhost:8080/mettmeister/1

请求正文如下所示:

{
  "mettmeister": "Jonas"
}

与数据库的连接成功。然后我有以下代码:

app.post('/mettmeister/:mettwochId', function(req, res) {

    var mettmeister = req.body.mettmeister;
    var mettwochId = req.params.mettwochId;
    var query = 'UPDATE mettwoch SET mettmeister = "'+ mettmeister +'" WHERE mettwoch_id = "'+ mettwochId +'"';

    console.log(mettmeister, mettwochId);

    connection.query(query, function(err, result) {
        if (!err) {
            res.status(201);
        } else {
            res.status(500);
        }
    });

});

console.log(mettmeister, mettwochId); 返回Jonas 1 这很好。

问题是它发送请求并且服务器根据日志获取消息但没有任何反应。服务器显然“停止”执行查询。

我已打开调试,查询看起来很好。

--> ComQueryPacket
{ command: 3,
  sql: 'UPDATE mettwoch SET mettmeister = "Jonas" WHERE mettwoch_id = "1"' }

如果我在我的数据库中手动执行查询,它可以工作。我很高兴能得到任何帮助。谢谢! :)

【问题讨论】:

  • 服务器无响应时,DB中的值是否更新?
  • mettwoch_id 是 INT 吗?如果是这样,请尝试删除引号:mettwoch_id = 1
  • 您应该在 sql 中使用转义变量,因为您的代码可能容易受到 sql 注入的攻击。
  • @Mr.Web 可以,但是手动执行它可以正常工作。
  • @jonicious,我明白了...

标签: javascript mysql node.js express


【解决方案1】:

好吧,我很愚蠢。对不起各位:(

我做了以下

res.status(201);

实际上你必须像这样完成请求:

res.status(201).end();

【讨论】:

  • 没错,但您一直在说 DB 也没有更新。
  • @thefourtheye 忽略了显而易见的事情.. :/ 我很抱歉 :(
  • 如果我没记错的话,更短的方法——sendStatus.
【解决方案2】:

像这样使用更新查询

connection.query('UPDATE mettwoch SET ? WHERE ?', [{ mettmeister: mettmeister }, { mettwoch_id: mettwochId }])

【讨论】:

  • 我的代码现在看起来像这样:connection.query('UPDATE mettwoch SET ? WHERE ?', [{ mettmeister: mettmeister }, { mettwoch_id: mettwochId }], function(err) { console.log(err); if (!err) { res.status(201); } else { res.status(500); } });
猜你喜欢
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 2017-06-24
  • 2012-09-20
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
相关资源
最近更新 更多