2010-02-02 77 views
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); 

獲取錯誤:Zend框架Zend_Db_Select對象ORDER

消息:SQLSTATE [HY093]:無效參數號:沒有參數被束縛

這個問題似乎在符合$選擇 - >順序。

這是爲了在結果中的相關性。它應該在Zend Framework中看起來如何?

而且似乎有一些與搜索有關的問題。有些詞搜索,有些則不是。爲什麼這樣工作?位:Z

感謝

回答

4

我認爲你需要改變你的選擇語句,以便對陣部從訂單條款併到字段列表移動。

,而不是

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'); 
+0

謝謝!奇蹟般有效! 你救了我! 給你加:) – Somebody 2010-02-03 10:08:14