gpt4 book ai didi

mysql - CakePHP 使用 %like% 和空格查找查询

转载 作者:行者123 更新时间:2023-11-29 20:37:04 25 4
gpt4 key购买 nike

我正在尝试根据类别 ID 或子类别名称查询页面。

变量 $cat 将从我的数据库中获取整数或 varchar。

我一直在使用 cakephp 1.3 和 sql 查找具有 $cat 类别或子类别(如 $cat)的所有文章

它工作得很好,但是当 $cat 在单词“google forms”之间有空格时就会出现问题。

我浏览了这个网站并尝试了多种方法,但没有成功。感谢任何建议。

这是我的 Controller 例程:

$cat = Sanitize::escape($cat);
$cat = trim($cat);
$title_a = str_replace($cat, "%".$cat."%", $cat);
$a_t = str_replace('"', $title_a, $title_a);
//var_dump($cat);

if(!empty($cat))
{
$sqlConditions = array('OR'=>array('Article.categories LIKE' => $a_t, 'Article.event_category_id' => $cat));
$sqlParams = array('conditions'=>$sqlConditions);
$catdata=$this->Article->find('all',$sqlParams);
return $catdata;
}

我尝试了许多不同的替代方案:

  1. RLIKE 代替 LIKE

  2. 使用 MATCH 的不同查询

    $sqlConditions = 数组( '或' => 数组( 'MATCH(Article.categories AGAINST(? IN BOOLEAN MODE)' => $cat, 'MATCH(Article.event_category_id) AGAINST(? IN BOOLEAN MODE)' => $cat ) );

  3. $sqlConditions = array('OR'=>array('Article.categories LIKE' => "%".$cat."%", 'Article.event_category_id' => $cat));

最佳答案

我认为一个不错的解决方案是删除所有空格并使 $cat 的字符小写。

$likeCat = strtolower(str_replace(' ', '', trim($cat)));
$sqlConditions = array(
'OR'=> array(
'LOWER(REPLACE(Article.categories, ' ', ''))' => $likeCat,
'Article.event_category_id' => $cat
)
);

关于mysql - CakePHP 使用 %like% 和空格查找查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com