node | MySQL multiple WHERE with AND子句

node | MySQL multiple WHERE with AND子句,mysql,node.js,Mysql,Node.js,我正在尝试使用mysql包在node中执行一个语句。我试图用和子句从表WHERE中进行选择,比如WHERE id=1和course=1,到目前为止,我已经能够进行选择,但是我得到了一个错误,我可以看到错误,当我绑定id时,没有和 这是我当前的代码 let sql = 'SELECT * FROM users WHERE ?'; let values = { id: 1, course: 1 } database.query(sql, values, (err, result)

我正在尝试使用mysql包在node中执行一个语句。我试图用
子句从表
WHERE
中进行选择,比如
WHERE id=1和course=1
,到目前为止,我已经能够进行选择,但是我得到了一个错误,我可以看到错误,当我绑定id时,没有

这是我当前的代码

let sql = 'SELECT * FROM users WHERE ?';

let values = {
    id: 1,
    course: 1
}

database.query(sql, values, (err, result) => {

}
这是我得到的错误

从id=1、course=1的用户中选择*

通过节点后的查询将丢失


任何帮助都将不胜感激。

可能看起来像这样:

let sql = 'SELECT * FROM users WHERE id = ? AND course = ?';

database.query(sql, [1, 1], (err, result) => {

}

我正在定义一种将简单sql转换为参数化查询的通用方法

假设给定的sql是:

var sql = "SELECT LK_USER_ID, LK_USER_STATUS, LK_USER_CONATCT_OFF FROM lk_users WHERE LK_USER_FNAME = 'test' AND LK_USER_LOGIN = 'debsnew' ORDER BY LK_USER_ID DESC LIMIT 1, 5";
现在,上述查询的参数化查询字符串版本为:

var sql = 'SELECT ?? FROM ?? WHERE LK_USER_FNAME = ? AND LK_USER_LOGIN = ? ORDER BY ?? DESC LIMIT ?,?';
var columns = ['LK_USER_ID', 'LK_USER_STATUS', 'LK_USER_CONATCT_OFF'];
var tbl = TABLE_PREFIX +'user';
var query = mysql.conn.query(sql, [columns, tbl, 'test', 'debsnew', 'LK_USER_ID',  0, 5], (err, results, fileds) => {
    console.log(results);
    res.json({'status': 1, 'data': results});
});
您可以通过控制台将生成的sql记录为:

console.log(query.sql);
console.log(query.sql);
在您的情况下,sql是:

let sql = 'SELECT * FROM users WHERE id = 1 AND course = 1';
修改后的参数化查询版本为:

var sql = 'SELECT * FROM ?? WHERE id = ? AND course = ?';
var tbl = 'users';
var query = mysql.conn.query(sql, [tbl, 1, 1], (err, results, fileds) => {
    console.log(results);
    res.json({'status': 1, 'data': results});
});
您可以通过将生成的sql与原始sql进行匹配