首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用户id更新列字段的Mysql语法

使用用户id更新列字段的Mysql语法
EN

Stack Overflow用户
提问于 2021-04-15 17:42:57
回答 1查看 30关注 0票数 0

我需要开发一个电子商务网站使用节点js和MySQL为我的大学课程。在结帐过程中,我被要求允许用户输入送货地址并更新用户表的对应字段。当我在查询中设置一个特定的id (例如id=100)时,下面的代码可以工作,但是如果我不想指定值呢?

我试过像id=这样的东西吗?(参见我的代码)但是我得到了一个错误语法。提前感谢您的帮助。

玛拉

代码语言:javascript
复制
app.post('/submitaddress', function (req, res) {
    
    // catching the variables
    var address = req.body.address;
    
    // put the data in the database
    // pulling in mysql
    var mysql = require('mysql');

  
    // set up a connection  
    var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    database: "test",
    password: ""
    });
    
      con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "UPDATE `test`.`users` SET `address`='"+address+"' WHERE  id=100;";
  console.log(sql);
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });
});
        
    res.send('address added');
  
})
代码语言:javascript
复制
<!--CHECKOUT PAGE-->
<div data-role="page" id="checkout">

    <div data-role="header">
        <div class="flex-container">
            <img class="responsive-2" src="images/logo_yes.png">
        </div>
    </div>

    <div role="main" class="ui-content">
         
        <h1>Delivery address</h1>
        
        Delivery address <input type="text" id="address"/> <br>
        <button id="submitorder">Submit order</button>
    
    </div><!-- /content -->

    <div data-role="footer">        
        <div data-role="navbar">
            <ul>
                <li><a href="#homepage" data-icon="home"></a></li>
                <li><a href="#" data-icon="shop"></a></li>
                <li><a href="#" data-icon="phone"></a></li>
            </ul>
        </div>
    </div>
    
</div><!-- /page -->

代码语言:javascript
复制
app.post('/submitaddress', function (req, res) {
    
    // catching the variables
    var address = req.body.address;
    
    // put the data in the database
    // pulling in mysql
    var mysql = require('mysql');

  
    // set up a connection  
    var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    database: "test",
    password: ""
    });
    
      con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "UPDATE `test`.`users` SET `address`='"+address+"' WHERE  `id`=?;";
  console.log(sql);
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });
});
        
    res.send('address added');
  
})

EN

回答 1

Stack Overflow用户

发布于 2021-04-15 18:05:09

使用node运行以下代码,然后您将了解将身份验证码放在何处,并在想要更新地址的API中使用结果用户ID。

通过使用中间件,您可以为所有路由添加一个通用的身份验证方法,并且可以使用res.locals对象将结果传递给API方法,这在许多场景中都非常有用。

代码语言:javascript
复制
var express = require('express');
const http = require("http");
const debug = require("debug")("node-angular");

let app = express();

console.log("Server Started");

const auth = (req, res, next) => {
    // Process the authorization header of the Request here and determine the logged in user
    res.locals.userID = 100;
    next();
};


app.get('/get', auth, async (req, res) => {
    try {
        res.status(201).json({
            details: "Secret User ID: "+res.locals.userID
        });

    } catch (err) {
        console.log(err);
        res.status(500).json({
            details: "Internal Error!"
        });
    }
});


// Server Start


const normalizePort = val => {
    var port = parseInt(val, 10);

    if (isNaN(port)) {
        // named pipe
        return val;
    }

    if (port >= 0) {
        // port number
        return port;
    }

    return false;
};

const onError = error => {
    if (error.syscall !== "listen") {
        throw error;
    }
    const bind = typeof addr === "string" ? "pipe " + addr : "port " + port;
    switch (error.code) {
        case "EACCES":
            console.error(bind + " requires elevated privileges");
            process.exit(1);
            break;
        case "EADDRINUSE":
            console.error(bind + " is already in use");
            process.exit(1);
            break;
        default:
            throw error;
    }
};

const onListening = () => {
    const addr = server.address();
    const bind = typeof addr === "string" ? "pipe " + addr : "port " + port;
    debug("Listening on " + bind);
};

const port = normalizePort(process.env.PORT || "3000");
app.set("port", port);

const server = http.createServer(app);
server.on("error", onError);
server.on("listening", onListening);
server.listen(port);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67106048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档