【发布时间】:2011-03-10 06:28:23
【问题描述】:
我正在尝试根据field1 和field2 的值查找记录。这是我的查询
$rec = RecQuery::create()->filterByField1($field1)
->filterByField2($field2)
->findOne();
$field2 有时可能有奇怪的字符。由于某种原因,每当 $field2 包含 \ 或 / 时,propel 就无法检索记录并返回空结果。
如果我这样做(仅基于 field1 获取所有记录,然后循环匹配 field2),那么它可以正常工作并且能够检索它
$recs = RecQuery::create()->filterByField1($field1)->find();
foreach ($recs as $rec){
if($rec->getField2() == $field2)
//found the record
}
}
有谁知道问题出在哪里?
【问题讨论】:
-
你如何赋予
$field2它的价值?你用什么数据库?这可能是一个逃逸的错误,但我不知道谁应该逃逸值(可能是 Propel)。 -
@Jan Fabry 我正在使用 MySQL。 $field2 的值是从我的代码中自动生成的(不是用户输入),每次都可以很好地保存,没有问题。不知道为什么 filterByField2 不起作用。我同意 Propel 的工作应该是照顾逃跑。我认为 Propel 通过 PDO 层处理所有这些问题。至少,我是这么想的,这就是为什么我首先使用 Propel(用于 PDO 层)并且我根本不逃避我的用户输入,因为我依赖于 Propel 这样做。您是否尝试过并发现了类似的结果?
标签: php database orm doctrine propel