2010-02-02 2 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 Framework Zend_Db_Select ORDER

Сообщение: SQLSTATE [HY093]: Неверный номер параметра: никакие параметры не были связаны

Проблема, кажется, в соответствии с $ select-> заказ.

Это актуально в результатах. Как это должно выглядеть в 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

Смежные вопросы