javascript - WHERE 子句中的多个列

标签 javascript mysql node.js express

我正在尝试创建一个网址查询字符串,您在其中输入一个参数,它会在我的 MySQL 数据库(存储来自 irc channel 的报价)中搜索一个随机报价,其中一次输入 LIKE 中的变量,但无法获取它使用我正在使用的查询搜索多个列。我希望它搜索的表中的两个字段是“标题”和“引用”。有更好的方法吗?现在我只是将其转到一个页面来确认输出以用于测试目的。下面的代码可以正常工作,就像仅搜索“标题”或“引用”字段一样。

app.get("/api", function(req, res){

    var search = "%" + req.query.search + "%";
    var queryString = "SELECT * FROM quotes WHERE title LIKE ? ORDER BY RAND() LIMIT 1";
    var queryString =  mysql.format(queryString, search);
    mysqlPool.getConnection(function(err, connection) {
        if(err) throw err;
        connection.query(queryString, function(err, rows, fields){
            if (!err){
                res.send('<xmp>' + JSON.stringify(rows[0], null, 2) + '</xmp>');
                connection.release();
            } else {
                console.log('Error while performing Query.');
                connnection.release();
            }
        });
    });
});

我尝试在下面执行此操作,但显然不起作用:

var queryString = "SELECT * FROM quotes WHERE (title OR quote) LIKE ? ORDER BY RAND() LIMIT 1";

在此处搜索仅包含“标题”的输出示例只是为了获得一个想法:

{
  "id": 3947,
  "nick": "o_O",
  "host": "o_O``!~o_O@*.ma.cable.rcn.com",
  "title": "gix.flesh.eating.bacteria",
  "quote": "<gix> omg my face is like 10lbs lighter",
  "channel": "#motorcycles",
  "timestamp": 1205791192
}

最佳答案

你不能像那样使用LIKE,试试这个;)

var queryString = "SELECT * FROM quotes WHERE title LIKE ? OR quote LIKE ? ORDER BY RAND() LIMIT 1";

关于javascript - WHERE 子句中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38089913/

相关文章:

javascript - 如果未发送,请重试发送邮件

javascript - 从另一个 json 数组项中查找数组项的索引

javascript - 在项目中使用 Google Apps 脚本函数

javascript - AngularJS 中的数字格式

php - while循环中的单选按钮

php - Laravel 中的用户关注系统

php - 有条件地更新列 PHP/MySQL

javascript - 在 Express 中使用自定义错误中间件时未定义 next

arrays - 附加到数组nodejs mongodb

javascript - event.clientX 和 event.clientY 与 event.x 和 event.y