【发布时间】:2019-03-29 08:12:47
【问题描述】:
这是一个带有 NodeJS 的 Discord Bot。所以我有一个名为 args 的数组,其中包含调用命令时用户传递的参数。我想要做的是在“症状”列下搜索数据库并将这些行返回。但我只想要包含数组中单词的那些。例如,我发送命令“疼痛,喉咙痛”,机器人会将其转换为数组。然后我希望它使用包含这些单词的任何内容搜索数据库,但它不必按那个顺序,所以就像该行可以说“喉咙痛,头痛,疼痛”,它仍然会选择它,因为它至少包含这两个参数。
我尝试了以下解决方案:
SELECT * FROM diagnose WHERE Symptoms IN (${args})
但只有在其中只有一个词时才会返回一行(那个词是咳嗽,没有别的,如果有另一个词就不会显示)。
SELECT * FROM diagnose WHERE Symptoms LIKE '%${args}%'
结果与上面相同。
我的代码:
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(' ');
const command = args.shift().toLowerCase();
if(command === `symptoms`){
if(!args.length){
return message.channel.send("You didn't provide me any symptoms.");
}
var query = connection.query(`SELECT * FROM diagnose WHERE Symptoms LIKE '${args}'`);
console.log(args1);
query.on('error', function(err) {
throw err;
});
query.on('fields', function(fields) {
//console.log(fields);
});
query.on('result', function(row) {
//console.log(row);
message.channel.send(row.Outcome);
});
}
【问题讨论】: