MySQL在同一列

时间:2016-05-14 16:48:45

标签: php mysql

我在PHP中遇到MySQL查询中的一些问题。

我在名为“keywords”的列中包含以下孟加拉语单词,并将其分配给名为“lyricist”的表中名为“name”的另一列的“গৌরিপ্রসন্ননার”值

  

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

当我正在寻找像'তোমার,আমার,তুমি'这样的连续词时,我得到了正确答案'পরিপ্রসন্ননার'但是当我在寻找像'তোমার,তুমি'这样的随机词时,它没有给出任何答案。

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

这里$ val有'রার,আমার,তুমি'或'তোমার,তুমি'这些类型的价值。

为什么不随机对待物品?请帮助。

1 个答案:

答案 0 :(得分:3)

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

将为您提供所有匹配的列,这些列以一些具有您的值的文本开头,然后以一些文本结尾。所以,如果您放置一些随机单词并且它们的顺序不正确,则此查询将不匹配。

我认为您想要做的是当您有多个值时,将它们放入不同的变量val1,val2,...并在查询中使用AND

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

所以你必须动态地构建你的查询,这样就可以了:

<?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]%' ";
            }
       }        
}
?>