Php mySQL如何限制查询返回包含子字符串的所有结果 让我们考虑一个例子。我想搜索这辆车,结果都是对的

Php mySQL如何限制查询返回包含子字符串的所有结果 让我们考虑一个例子。我想搜索这辆车,结果都是对的,php,mysql,Php,Mysql,但问题是,我还得到了所有包含car作为子字符串的结果,例如,我的结果还返回了carto、care以及数据库中包含car作为子字符串的每个单词 我想要的是应用一个过滤器/条件,这样它就不会返回像carto和care这样的单词,而应该只返回像car和cars这样的单词 我怎样才能做到这一点?我尝试过以下解决方案,我知道问题是什么,但我不知道如何解决它 $string.='( tbl_data.ad_title like "%'.$_REQUEST['searchtt'].'%

但问题是,我还得到了所有包含car作为子字符串的结果,例如,我的结果还返回了carto、care以及数据库中包含car作为子字符串的每个单词

我想要的是应用一个过滤器/条件,这样它就不会返回像carto和care这样的单词,而应该只返回像car和cars这样的单词

我怎样才能做到这一点?我尝试过以下解决方案,我知道问题是什么,但我不知道如何解决它

$string.='(
            tbl_data.ad_title like "%'.$_REQUEST['searchtt'].'%"  
             or tbl_categories.cat_title like "%'.$_REQUEST['searchtt'].'%"           
          ) and ';

$gtdata = mysql_query(

"SELECT tbl_data.id, tbl_data.main_cat, tbl_data.sub_cat, 
        tbl_data.makevalue, tbl_data.ad_title, tbl_data.additional,
        tbl_data.city_name, tbl_data.city_area, 
        tbl_data.date1,tbl_data.date2,tbl_data.make_featured_active, 
        tbl_data.make_stoplight_active, tbl_data.make_urgent_active 
        FROM tbl_data 
        LEFT JOIN tbl_categories
        ON tbl_data.main_cat=tbl_categories.id 
        WHERE ".$string." tbl_data.status='1' and tbl_data.del=0
        and tbl_data.exp=0 and tbl_data.sold=0 and tbl_data.userblock='0'
       ".$orderby." 
       limit ".$limit_start.",".$limit_end."");
while($res_gtdata=mysql_fetch_array($gtdata))
{
//all results are stored in this variable
//$res
}

听起来你想搜索单数和复数名词,例如“car”和“cars”、“apple”和“apples”。对吗

如果是这样,请使用更具体的
where
子句,而不要像
那样只查找单数和复数形式:

$singular = $_REQUEST['searchtt'];
$plural   = $singular.'s';

$gtdata = mysql_query(
"SELECT ...
FROM...
WHERE tbl_data.ad_title IN ('".$singular."', '".$plural."')
OR tbl_categories.cat_title IN ('".$singular."', '".$plural."')
...
这是一个幼稚的实现,可能适合您。大多数复数形式都很简单,只需加一个“s”,但以元音结尾的名词需要“es”,例如potato/potatos,还有很多不规则的形式,比如foot/foot和child/children。详情请参阅


您需要知道的另一件事是查询(
searchtt
)是否总是单数的。例如,人们总是搜索“car”而不是“cars”?

使用
WHERE title IN('car','cars')
听起来像是要进行区域设置感知的全文搜索,因为您的问题表明您需要子字符串结果,但不是所有子字符串结果。无论是单数还是复数,我需要它必须比较excite单词,这意味着如果我输入的是搜索汽车而不是汽车。在这种情况下,你需要准确地告诉我们你所说的“我想要的是应用一个过滤器/条件,这样它就不会返回卡通和关怀之类的词,而应该只返回汽车和汽车之类的词”。