1

我正在开发 cakephp 1.3。我在字符编码中发现问题。我有两个模型KeywordGroup,这样 Keyword 属于 Group。我要做的是在模型关键字中执行全文查询。

function geParentKeyword($keyword) {    

//$keyword = *Acupuncturist*;   Assuming this as input
$match = html_entity_decode("MATCH(Keyword.keyword) AGAINST (\"".trim($keyword)."\" IN BOOLEAN MODE)" );
return $this->find('first', array('fields' =>array('Group.name'), 'conditions' =>array($match) ));          
}

这个查询我得到了错误的结果。我调试了查询,我得到了这个

SELECT `Group`.`name` 
FROM `keywords` AS `Keyword` 
LEFT JOIN `groups` AS `Group` ON (`Keyword`.`group_id` = `Group`.`id`)  
WHERE MATCH(`Keyword`.`keyword`) AGAINST ("*Acupuncturist*" IN BOOLEAN MODE)   
LIMIT 1"

该查询是完美的,但这里的问题是 $match cake 将双引号转换为"我尝试使用 html_entity_decode 和 str_replace() 但它们显示相同的查询。

更多细节。

核心.php

Configure::write('App.encoding', 'UTF-8');

数据库.php

var $default = array(
        ….
        'encoding' => 'UTF8',
    );

预期结果

MATCH(Keyword.keyword) AGAINST (' *Acupuncturist* ' IN BOOLEAN MODE)

请指导我是什么问题。提前致谢。

4

3 回答 3

1

你试过这个吗?

$match = "MATCH(Keyword.keyword) AGAINST ('".trim($keyword)."' IN BOOLEAN MODE)";
于 2012-06-21T09:16:20.867 回答
0

尝试

$match = 'MATCH(Keyword.keyword) AGAINST (\''. html_entity_decode(trim($keyword)) .'\' IN BOOLEAN MODE)';
于 2012-06-21T09:12:37.903 回答
-1

我自己解决这个问题。

这是由于调试模式,我禁用了调试模式。它只工作

Configure::write('debug', 0);
于 2012-06-21T11:30:16.023 回答