1
    $select->where('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?)',$searching_string);
    $select->order('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?) DESC',$searching);

取得エラー:

メッセージ: SQLSTATE[HY093]: 無効なパラメーター番号: パラメーターがバインドされていません

問題は $select->order の行にあるようです。

結果の関連性のためです。Zend Framework でどのように見えるべきですか?

そして、検索に問題があるようです。検索する単語と検索しない単語があります。なぜこれがそのように機能するのですか?:Z

ありがとう

4

1 に答える 1

4

MATCH AGAINST 部分が順序句からフィールド リストに移動するように、select ステートメントを変更する必要があると思います。

例えば

それ以外の

SELECT *
FROM mytable
WHERE match(text,phone,phone2) AGAINST ('something')
ORDER BY match(text,phone,phone2) AGAINST ('something');

あなたが持っているだろう

SELECT mytable.*, match(text,phone,phone2) AGAINST ('something') AS relevanceScore
FROM mytable
WHERE match(text,phone,phone2) AGAINST ('something')
ORDER BY relevanceScore DESC;

したがって、あなたのケースに関連して、あなたの選択はより似たものになります

$select->from('tableName',array('*','relevenceScore'=>$db->quoteInto('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?)',$searching_string));
$select->where('MATCH(text,phone,phone2,email,email2,www,gadi,augums,skype) AGAINST(?)',$searching_string);
$select->order('relevanceScore DESC');
于 2010-02-03T09:48:44.933 に答える