2014-10-13 136 views
0

我有一个mySQL命令的问题似乎没有正确工作。我正在构建一个简单的PHP搜索功能,并且需要它来检查两列(同一个表),如果任一列中的内容都是LIKE,那么我需要它来输出它。它似乎工作,如果我只看它在一列中,但如果我把OR语句,它仍然有效,它似乎不是每次都拉正确的数据。这有点难以解释,所以我会在下面使用一个例子。mySQL给出不正确的结果

PHP和MySQL:

 <?php 
     $in=$_GET['txt']; 
     $msg=""; 
     if(strlen($in)>0 and strlen($in) <20){ 
     $t=mysql_query("SELECT * FROM es_sermons WHERE searchTags like '$in%' OR serviceName like '$in%'"); 
     while($nt=mysql_fetch_array($t)){ 
      $msg.=$nt[name]."$nt[serviceName]<br>"; 
     } 
     } 
     echo $msg 
    ?> 

数据库表:

id | serviceName     | searchTags 
1 | Prayer Positions    | Prayer, Fasting, Morning, Pastor, Donnie 
2 | Ephesians Part 9    | Ephesians, Pastor, Donnie, Wednesday 
3 | Gaining a Clear Vision  | Missions, Ministry, Donnie, Pastor, Morning 
4 | Downpour Part 7    | downpour, Tim, 3, Evening, Sunday 
5 | God is For Me Part 4   | Pastor, Donnie, Morning, God is For Me 

实施例的搜索结果:

搜寻: “牧师” - >结果是:2,5 - >应该已经是2,3,5 - >为什么3被遗漏了?

搜索:“Donnie” - >结果分别是:5 - >应该是1,5 - >为什么1被遗漏了?

Searched for:“Wednesday” - > Results Were:NONE - >应该是2 - >为什么2被遗漏了?

结果非常不一致。如果有人能帮助,我将不胜感激。谢谢!

回答

2

尝试以下: -

$t=mysql_query("SELECT * FROM es_sermons WHERE searchTags like '%$in%' OR serviceName like '%$in%'"); // % sign on both side of the search word 
+0

我想知道,他是怎么得到“牧师”的结果2和5,如果问题是缺少%,它应该只给5对不对? –

+0

太好了,谢谢!这工作完美!如果你不介意,你能解释一下前后%的原因/区别吗? –