2010-02-02 95 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