2011-03-10 124 views
1

時,Propel ORM無法過濾我試圖根據field1field2的值查找記錄。這是我的查詢當字段值包含/或

$rec = RecQuery::create()->filterByField1($field1) 
         ->filterByField2($field2) 
         ->findOne(); 

$ field2有時可能有奇怪的字符。由於某些原因,每當$ field2包含\/時,propel將無法檢索記錄並返回空結果。

如果我這樣做(讓基於字段1只,然後循環匹配場2的所有記錄),然後正常工作,並能找回它

$recs = RecQuery::create()->filterByField1($field1)->find(); 
foreach ($recs as $rec){ 
    if($rec->getField2() == $field2) 
     //found the record 
    } 
} 

有誰知道問題是什麼?

+0

你如何給'$ field2'賦值?你使用什麼數據庫?這可能是一個逃跑的錯誤,但我不知道誰應該逃避價值(可能是Propel)。 – 2011-03-10 08:11:20

+0

@Jan Fabry我正在使用MySQL。 $ field2的值是從我的代碼(不是用戶輸入)中自動生成的,並且每次都可以很好地保存,沒有問題。不知道爲什麼filterByField2不起作用。我同意它應該是Propel的工作來照顧逃跑。我認爲Propel負責所有通過PDO層。至少,這就是我的想法,也是我爲什麼首先使用Propel(用於PDO層)的原因,並且我根本不會逃避我的用戶輸入,因爲我依賴於Propel這樣做。你有沒有嘗試過,發現類似的結果? – silow 2011-03-10 08:26:01

回答

0

即使字符串中有斜線字符,Propel仍然應該轉義。

你能抓住它正在運行的SQL嗎(當你得到你的空結果集),並從那裏看到問題是什麼?將它添加到您的問題,如果沒有爲您揭示任何亮點。