所以我有代码,该代码基于路由调用mySQL,但是它不起作用...
Cat
结果不确定。...
答案 0 :(得分:0)
对于整个比较表达式,请不要使用占位符。并且ORDER BY
子句必须在WHERE
子句之后。
您需要写:
connection.query("SELECT * FROM actors WHERE attitude = :attitude ORDER BY id ",{'attitude': `${req.params.att}`}, function(err, result) {
:attitude
占位符被替换为对象的attitude
属性值。
如果该列是数字列,则不应将req.params.att
放在模板文字中。您应该将数值传递给查询。
答案 1 :(得分:0)
尚不清楚您在使用哪个MySQL软件包,但在我看来,您的SQL格式不正确。
我希望您的查询看起来像这样:
connection.query('SELECT * FROM actors WHERE attitude=?', req.params.att, ...)
这将导致一个如下所示的SQL查询:
SELECT * FROM actores WHERE attitude='your value';
在查询中,您没有WHERE
表达式,只是一个表达式应位于的占位符。我对那里的每个 MySQL软件包并不熟悉,但是我所知道的每个软件包都将要求您阐明要匹配的条件。
答案 2 :(得分:0)
我修复了它。交换WHERE和ORDER BY就可以了!
connection.query("SELECT * FROM actors WHERE ? ORDER BY id",[{'attitude':`${x}`}], function(err, result) {
console.log(result);
var html = "<h1>Attitude-chart</h1>";
html += "<ul>";
for (var i = 0; i < result.length; i++) {
html += "<li><p> ID: " + result[i].id + "</p>";
html += "<p>Name: " + result[i].name + " </p></li>";
}
html += "</ul>";
res.send(html);
});