ExpressJs执行MySQL选择查询?参数

时间:2017-11-04 09:24:12

标签: mysql express

我是使用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

我不知道为什么第二个'?'参数抛出了一个错误...

我错过了什么吗?谁能帮我 ? :)

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 });
});