1

私はcakephp 1.3に取り組んでいます。文字エンコーディングに問題があります。Keyword が Groupに属するように、KeywordGroupの2 つのモデルがあります。私がやろうとしているのは、モデル キーワードで全文クエリを実行することです。

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() で試しましたが、同じクエリが表示されます。

詳細については。

Core.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 に答える