首页 > 解决方案 > nodejs用'SET @'XXX''表达mysql查询

问题描述

我正在开发 nodejs/express 应用程序。在我的路线中,我需要从 MySQL 数据库中查询数据。对于其中包含参数的查询,它可以正常工作。任何不带参数的查询都按预期工作:

SELECT * FROM table WHERE col = 'b'

但是下面的返回undefined

 SET @a = 'b'
 SELECT * FROM table where col = @a

我在单独的函数中为查询生成字符串(不确定这是否有任何区别)。任何帮助将不胜感激。

标签: mysqlnode.jsexpressparametersroutes

解决方案


我认为您可能正在寻找?占位符方法,描述于

https://www.w3schools.com/nodejs/nodejs_mysql_where.asp

var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ?';
con.query(sql, [adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

还有多个占位符,作为数组传入:

var name = 'Amy';
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

推荐阅读