我是使用ExpressJs的新手,我创建了自己的项目来训练自己。我想做一个搜索栏,所以用MySQL执行一个选择查询。
这是我的代码:
let query = req.params.q;
console.log(query);
//var sql = "SELECT * FROM Movies WHERE movie_title like '%" + query + "%' OR movie_originalTitle like '%"+ query+"%'";
var sql = "SELECT * FROM Movies WHERE movie_originalTitle like ? OR movie_title like ?";
var values = [
['%' + query + '%', '%' + query + '%']
];
console.log(values[0]);
connection.query(sql, [values], (err, result, fields) => {
console.log(sql);
if (err) {
throw err;
};
JSON.stringify(result);
res.send({ movies: result });
});
我想用'?'来做参数。我成功地用一个'?'做到了但每当我尝试添加第二个参数时,我都会遇到MySQL错误
ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
我不知道为什么第二个'?'参数抛出了一个错误...
我错过了什么吗?谁能帮我 ? :)
答案 0 :(得分:1)
从我在别处看到的,第二个参数应该是包含查询参数的数组。你正在传递这个:
[values]
但values
已经是一个数组。你能尝试直接传递values
:
connection.query(sql, values, (err, result, fields) => {
console.log(sql);
if (err) {
throw err;
};
JSON.stringify(result);
res.send({ movies: result });
});