我發現如果我在MATCH AGAINST中使用WHERE語法不會替換傳遞的參數。例如,如果我運行下面的代碼 $MATCH AGAINST在Doctrine
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)");
我使用Doctrine 1.2.2。
有誰知道爲什麼不在執行sql表達式之前替換參數?
單引號的使用似乎導致了問題 - 這個'concat(「'」,?,「*'」)'help? – ajreal 2010-11-21 16:32:05
是的,它的工作原理。謝謝。 – Emanuel 2010-11-21 18:05:26