我试图创建一个url查询字符串,在其中输入一个参数,它会搜索我的MySQL数据库(来自irc通道的存储引号),查找一个随机引用,一次输入LIKE但有问题让它使用我正在使用的查询搜索多个列。我希望它在表中搜索的两个字段是" title"和#34;引用"。有没有更好的方法呢?现在我只是为了测试目的而进入页面确认输出。如果只是搜索"标题"以下代码可以正常工作。或"引用"只有田野。
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";
仅使用&#34;标题&#34;输出的示例在这里搜索只是为了得到一个想法:
{
"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
}
答案 0 :(得分:2)
你不能那样使用LIKE
,试试这个;)
var queryString = "SELECT * FROM quotes WHERE title LIKE ? OR quote LIKE ? ORDER BY RAND() LIMIT 1";
答案 1 :(得分:0)
WHERE-Clause 中的每个条件都必须为True。您正在查看标题 或 引用。 如果在 OR 中满足条件A,则退出并且不检查第二个条件。 你可以检查它:
WHERE
(
title like ?
and
quote like?
OR
(
(title or quote) like ?
)
)
这解析就像
标题包含?并且引用包含?
是:返回行 不:GoTo2。内部()
是:返回行 否:不返回行
希望这有点清除它。
致以最诚挚的问候,
乔治