Php MySQL中如何根据关键字过滤数据?
我面临一个关于过滤关键字检索数据的问题 我的筛选表:-Php MySQL中如何根据关键字过滤数据?,php,mysql,Php,Mysql,我面临一个关于过滤关键字检索数据的问题 我的筛选表:- +--+-------+-----------+---------+---------------+ |id|user_id|for_page_id|key_words| message | +--+-------+-----------+---------+---------------+ | 1| 12| 2 |he,you |You are awesome| | 2| 12|
+--+-------+-----------+---------+---------------+
|id|user_id|for_page_id|key_words| message |
+--+-------+-----------+---------+---------------+
| 1| 12| 2 |he,you |You are awesome|
| 2| 12| 2 |the,book |this is good |
+--+-------+-----------+---------+---------------+
我有一个关键字字符串,我想找到该关键字对应的消息。我试过这个:-
$string='he is good';
$keyWords=explode(' ',$string);
$query="SELECT * FROM `filter` WHERE `key_words` like '".$keyWords[0]."' or`key_words` like
'".$keyWords[1]."' or`key_words` like '".$keyWords[2]."'";
echo ($query);
这个问题看起来像
SELECT * FROM `filter` WHERE `key_words` like 'he' or`key_words` like 'is' or`key_words` like 'good'
它的输出为
| 1| 12| 2 |he,you |You are awesome|
| 2| 12| 2 |the,book |this is good |
接受的输出是
| 1| 12| 2 |he,you |You are awesome|
如果您有任何想法,我们将不胜感激。您可能正在寻找FIND_IN_SET()函数
SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
如果在列表中找不到该字符串,则返回0
下面是指向的链接,您可能正在查找FIND_IN_SET()函数
SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
如果在列表中找不到该字符串,则返回0
这里有一个链接,指向试试这个。希望对你有帮助
$string='he is good';
$keyWords=explode(' ',$string);
$searchQuery='';
foreach ($keyWords as $word) {
$word = trim($word);
if ($word) {
$searchQuery = $searchQuery . "find_in_set('$word', trim(key_words)) > 0 or ";
}
}
$searchQuery = chop($searchQuery, ' or ');
$query="SELECT * FROM filter WHERE ".$searchQuery;
echo ($query);
查询将是这样的
SELECT * FROM filter WHERE find_in_set('he', trim(key_words)) > 0 or find_in_set('is', trim(key_words)) > 0 or find_in_set('good', trim(key_words)) > 0
试试这个。希望对你有帮助
$string='he is good';
$keyWords=explode(' ',$string);
$searchQuery='';
foreach ($keyWords as $word) {
$word = trim($word);
if ($word) {
$searchQuery = $searchQuery . "find_in_set('$word', trim(key_words)) > 0 or ";
}
}
$searchQuery = chop($searchQuery, ' or ');
$query="SELECT * FROM filter WHERE ".$searchQuery;
echo ($query);
查询将是这样的
SELECT * FROM filter WHERE find_in_set('he', trim(key_words)) > 0 or find_in_set('is', trim(key_words)) > 0 or find_in_set('good', trim(key_words)) > 0
我建议您使用少量php代码,而不是仅使用MYSQL。就像在Mysql中一样,它将比较字符串的这一部分,如果匹配,它将返回列的所有内容。所以这种方法是错误的。好吧,那么我怎么能用php代码做到这一点呢?我建议使用少量的php代码,而不是只使用MYSQL。就像在Mysql中一样,它将比较字符串的这一部分,如果匹配,它将返回列的所有内容。所以这个方法是错误的。好吧,那么我如何通过php代码做到这一点呢?谢谢你的建议。谢谢你的建议。