db->查询LIKE语句无法正常运行

时间:2014-04-07 18:45:54

标签: php mysql joomla

我正在使用joomla并遇到一个小问题。在我的一个db查询中,我有一个类似于下面的语句。

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('a.*,b.category_name')
        ->from('#__carlist AS a')
        ->innerJoin('#__categories AS b ON b.id = a.category_id');

if ($name != '') {
$query->where("a.db_name like '%" . $name . "%'");
}

$db->setQuery($query);
$rows =  $db->loadObjectList();

问题在于,当我从搜索框中搜索时,结果与使用普通的sql不同。

哪里错了。 例如,如果我搜索“你好我”,系统将不返回任何结果。如果我搜索'one',它将返回结果。在DB中,真的有“你好我”。每当我搜索两个或更多单词的字符串时,结果将不会返回,尽管它存在于DB中。

有人知道我的编码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

如果您的数据是这样的:

  a.db_name like '%hello me%'  // in the end should be like that

你必须回应你的查询,看看它是否就是这样。你必须使查询看起来更像:

  Like '%hello%me%'

或将这两个单词拆分为

  Like '%hello%' or like '%me%'

您也可以尝试使用全文搜索

  MATCH( a.db_name) AGAINST ('hello me' in BOOLEAN MODE)