mySQL给出了不正确的结果

时间:2014-10-13 06:17:58

标签: php mysql sql database where

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

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

搜索结果示例:

搜索:&#34;牧师&#34; - &GT;结果是:2,5->应该是2,3,5 - >为什么3被遗漏了?

搜索:&#34; Donnie&#34; - &GT;结果是:5 - >应该是1,5 - >为什么1被遗漏?

搜索:&#34;星期三&#34; - &GT;结果是:无 - &gt;应该是2 - >为什么2被遗漏了?

结果非常不一致。如果有人可以提供帮助,我将非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

请尝试以下方法: -

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