Intereting Posts

МАТЧА ПРОТИВ ДОКТРИНЫ

Я обнаружил, что если я использую MATCH AGAINST в Doctrine с WHERE, синтаксис не заменяет переданные параметры. Например, если я запустил следующий код $

q = Doctrine_Query::create() ->select('*') ->from('TourismUnit tu') ->where('FALSE'); if ($keywords) { $keywords_array = $this->parse_keywords($keywords); for ($i = 0; $i < sizeof($keywords_array); $i++) $q->orWhere("MATCH (name, description) AGAINST ('?*' IN BOOLEAN MODE)", $keywords_array[$i]); } 

не находит никаких результатов. И если они используют конкатенацию строк, похоже, работают.

  $q->orWhere("MATCH (name, description) AGAINST ('".$keywords_array[$i]."*' IN BOOLEAN MODE)"); 

Я использую Доктрина 1.2.2.

Кто-нибудь знает, почему бы не заменить параметры перед выполнением выражения sql?

использование одной кавычки, вызывающей проблему,
конвертировать его для использования concat("'", ?, "*'")

В подготовленных заявлениях, как указано выше, заполнителю не нравятся цитаты, как показано в руководстве доктрины.

Поэтому вы можете просто написать:

 $q->orWhere("MATCH (name, description) AGAINST (? IN BOOLEAN MODE)", $keywords_array[$i].'*');