Zend Framework zend_db_select ORDER

时间:2010-02-02 12:44:28

标签: sql zend-framework zend-db

    $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

由于

1 个答案:

答案 0 :(得分:4)

我认为您需要更改您的select语句,以便将MATCH AGAINST部分从order子句移动到字段列表中。

例如

而不是

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