node | MySQL multiple WHERE with AND子句
我正在尝试使用mysql包在node中执行一个语句。我试图用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)
和子句从表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进行匹配