我正在使用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中。
有人知道我的编码有什么问题吗?
答案 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)