简体   繁体   English

MySQL在同一列中搜索多个关键字

[英]MySQL search for multiple keywords in same column

I am facing some problems in MySQL query in PHP. 我在PHP中的MySQL查询中遇到一些问题。

I have the below Bengali words in a column named 'keywords' and they are assigned to 'গৌরিপ্রসন্ন মজুমদার' value of another column named 'name' in a table named 'lyricist' 我在名为“关键字”的列中包含以下孟加拉语单词,并将它们分配给名为“抒情者”的表中另一列名为“名称”的列的“গৌরিপ্রসন্নগৌরিপ্রসন্ন”值

সয়না,রয়না,কেমন,তাকে,আমার,তুমি,কৃষ্ণ,রাধে,দিতে,চাই,আরো,কাছে,তোমার,আমার,তুমি,থাকো,কাছে,ডাকো,আমি,পড়েছে সয়না,রয়না,কেমন,তাকে,আমার,তুমি,কৃষ্ণ,রাধে,দিতে,চাই,আরো,কাছে,তোমার,আমার,তুমি,থাকো,কাছে,ডাকো,আমি,পড়েছে

When I'm searching for some consecutive words like 'তোমার,আমার,তুমি' I get the correct answer 'গৌরিপ্রসন্ন মজুমদার' But when i'm searching for random words like 'তোমার,তুমি' it's not giving any answer. 当我搜索诸如“ consecutive,like,তুমি”之类的连续单词时,会得到正确的答案“গৌরিপ্রসন্নগৌরিপ্রসন্ন”,但是当我搜索诸如“তোমার,তুমি”之类的随机单词时,它不会给出任何答案。

$query = "SELECT name FROM `lyricist` WHERE keywords LIKE '%$val%'";

Here $val has 'তোমার,আমার,তুমি' or 'তোমার,তুমি' these type of values. $ val在这里具有“তোমার,আমার,তুমি”或“তোমার,তুমি”这些类型的值。

Why not it's treating the item randomly? 为什么不随机处理该项目? Please HELP. 请帮忙。

$query = "SELECT name FROM `lyricist` WHERE keywords LIKE '%$val%'";

Will get you all the matching columns that start with some text having your value and then end with some text.So if you put some random words and they are not in the correct order obviously this query will not match. 将会得到所有匹配的列,这些匹配的列以具有您的值的文本开头,然后以某些文本结尾。因此,如果您输入一些随机单词并且它们的顺序不正确,显然此查询将不匹配。

I think what you want to do is when you have multiple values is put them in different variable val1,val2,... and using AND in your query 我认为您想要做的是将多个值放入不同的变量val1,val2,...,并在查询中使用AND

$query = "SELECT name FROM `lyricist` WHERE keywords LIKE '%$val1%' AND keywords LIKE '%$val2%'";

So you would have to construct your query dynamically something like this would work: 因此,您将必须动态构建查询,如下所示:

<?php
$val="keyword1,keyword2,keyword3";
$keywords=explode(',',$val);
if(!empty($keywords)){
     $query="SELECT name FROM `lyricist` WHERE keywords LIKE '%$keywords[0]%' ";  
        if(count($keywords)>1){
        for($i=1;$i<count($keywords);$i++){
         $query.="AND keywords LIKE '%$keywords[$i]%' ";
            }
       }        
}
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM