当字段值包含/或\
问题描述:
时,Propel ORM无法过滤我试图根据field1
和field2
的值查找记录。这是我的查询当字段值包含/或
$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
}
}
有谁知道问题是什么?
答
即使字符串中有斜线字符,Propel仍然应该转义。
你能抓住它正在运行的SQL吗(当你得到你的空结果集),并从那里看到问题是什么?将它添加到您的问题,如果没有为您揭示任何亮点。
你如何给'$ field2'赋值?你使用什么数据库?这可能是一个逃跑的错误,但我不知道谁应该逃避价值(可能是Propel)。 – 2011-03-10 08:11:20
@Jan Fabry我正在使用MySQL。 $ field2的值是从我的代码(不是用户输入)中自动生成的,并且每次都可以很好地保存,没有问题。不知道为什么filterByField2不起作用。我同意它应该是Propel的工作来照顾逃跑。我认为Propel负责所有通过PDO层。至少,这就是我的想法,也是我为什么首先使用Propel(用于PDO层)的原因,并且我根本不会逃避我的用户输入,因为我依赖于Propel这样做。你有没有尝试过,发现类似的结果? – silow 2011-03-10 08:26:01