nodejs mysql查询标识符'?'错误,但连接查询工作

时间:2018-10-24 22:02:40

标签: mysql sql node.js function parameters

我正在尝试在我的网站上进行常规查询,我一直在项目期间一直使用参数来处理数据,没有任何问题,现在使用这些表对我来说不起作用,如果我按以下方式进行操作:

在浏览器中:"localhost:3000/user/2/table/users/list "

router.get('/user/:userid/table/:Tablename/list', function(){
  var table = req.params.Tablename;

  db.get().query('SELECT * FROM  ? ',[table] ,function(err, rows, fields) {
    if (err) throw err;
    done(rows);
  });

});

这会产生错误:

ER_PARSE_ERROR:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在行的'users'附近使用 1


但是如果我这样做它就可以工作:


db.get().query('SELECT * FROM  '+table ,function(err, rows, fields) {
        if (err) throw err;
        done(rows);
      });

我不明白为什么会这样,但是我也不想这样,我觉得那样走是不对的,此外,那样走对他有任何不便吗? >

1 个答案:

答案 0 :(得分:0)

一个朋友刚刚分享了我的原因,为什么在相同的mysql指南中,我们必须使用双字符作为标记。

??用作标识符,将?用作值

如文档中所述,这将是一个示例

查询:"SELECT * FROM ?? WHERE ?? = ?"

我希望我的无知和自己的回应会在以后的将来对某人有所帮助。