nodejs mysql错误

ego6inou  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(555)

节点代码如下:

app.get('/search', function(req, res){
    var keyword = req.query.q;
    con.query("SELECT Post_Title, Post_Icon, Post_Cont, Post_Author, Post_Date FROM Posts WHERE Post_Title LIKE '" + keyword + "' OR Post_Icon LIKE '" + keyword + "' OR Post_Cont LIKE '" + keyword + "' OR Post_Author LIKE '" + keyword + "' OR Post_Date LIKE '" + keyword + "' ORDER BY Post_Date ASC", function (err, result) {
    if (err){
    console.log("Error on DB SELECT.");
    console.log(err);
    tellSelectError(req, res);
}else{
    console.log("Database selected");
    console.log(result);
    /*res.render('index', {
        info: info,
        result: result
    });*/
    res.json(result);
    }
});
});

它将空的json发送到客户端浏览器。
截图上传地点:https://i.stack.imgur.com/kpsda.jpg
请帮忙。。。。。此代码正在工作: SELECT * FROM Posts WHERE Post_ID = " + keyword 但是我想用like来处理所有不包括post\u id的文章。
控制台日志(err);没有记录错误。
有个消息:当我把sql改为 SELECT * FROM Posts ,它正确地返回所有原始值,但 SELECT Post_Title, Post_Icon, Post_Cont, Post_Author, Post_Date FROM Posts WHERE Post_Title LIKE '" + keyword + "' OR Post_Icon LIKE '" + keyword + "' OR Post_Cont LIKE '" + keyword + "' OR Post_Author LIKE '" + keyword + "' OR Post_Date LIKE '" + keyword + "' ORDER BY Post_Date ASC 未按预期工作。

mfuanj7w

mfuanj7w1#

您需要将传递给查询的值用引号括起来。所以正确的语法应该是:

"SELECT Post_Title, Post_Icon, Post_Cont, Post_Author, Post_Date 
FROM Posts 
WHERE Post_Title LIKE '" + keyword + "' OR Post_Icon LIKE '" + keyword + "' OR Post_Cont LIKE '" + keyword + "' OR Post_Author LIKE '" + keyword + "' OR Post_Date LIKE '" + keyword + "' ORDER BY Post_Date ASC"

注意:like是一个运算符,用来代替=来搜索字段中的值将尝试匹配全场。为此,请在三个不同的选项中使用通配符(%):
%关键字值以关键字结尾;
关键字%值以关键字开头;
%关键字%该值包含关键字的某个位置
如果不使用通配符,那么像这样使用是没有用的

相关问题