我正在研究cakephp 1.3。我在字符编码中发现问题。我有两个模型关键字和组,因此关键字属于组。我正在尝试做的是在模型关键字中执行全文查询。
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蛋糕将双引号转换为我尝试使用 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)
请指导我是什么问题。提前谢谢。
你试过这个吗?
$match = "MATCH(Keyword.keyword) AGAINST ('".trim($keyword)."' IN BOOLEAN MODE)";
试试
$match = 'MATCH(Keyword.keyword) AGAINST ('''. html_entity_decode(trim($keyword)) .''' IN BOOLEAN MODE)';
我自己解决这个问题。
这是由于调试模式,我禁用了调试模式。它只有效
Configure::write('debug', 0);