当字段值包含/或\

问题描述:

时,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

即使字符串中有斜线字符,Propel仍然应该转义。

你能抓住它正在运行的SQL吗(当你得到你的空结果集),并从那里看到问题是什么?将它添加到您的问题,如果没有为您揭示任何亮点。