php - mySQL 给出不正确的结果

标签 php mysql sql database where-clause

我的 mySQL 命令有点问题,它似乎无法正常工作。我正在构建一个简单的 PHP 搜索功能,需要它检查两列(同一个表),如果任一列中的内容与它类似,那么我需要它来输出它。如果我只在一列中查找它似乎可以工作,但是如果我将 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

搜索结果示例:

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

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

搜索:“星期三” -> 结果为:无 -> 应该是 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

关于php - mySQL 给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333991/

相关文章:

php - PHP-MySQL 分页中的序列号

php - Socket发送终端输入的数据

php - 正则表达式匹配,只提取想要的字符串片段

mysql - 将 MySQL 用于自动完成字段

MySQL 运算符 LIKE 和 =

php - 注销的 session 通过后退按钮恢复

php - Eve API xml 到 php

php - 通过 cronjob 将 600 张图片上传到 mysql 数据库

sql - 比较列上的当前月份和上个月的行,SQL Server 2012

mysql - 如何在存储过程中使用插入语句生成的值?