Propel正在丢失查询参数

时间:2013-11-22 17:16:58

标签: php mysql pdo propel

->where("((Job.TwCountry = ? AND Job.TwAbroad = 1) OR (Job.TwCountry != ? AND Job.TwCountryTarget LIKE \"%?%\"))", array($site,$site,$site))

是Propel 1.7查询的一部分。如您所见,这三个参数是相同的。这不起作用,这是错误:

Invalid parameter number: number of bound variables does not match number of tokens

据我所知,中间Propel表示法对所有三个参数使用相同的数组键,从而失去了它们应映射到三个不同PDO参数的事实。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是我的猜测:

->where(
    "((Job.TwCountry = ? AND Job.TwAbroad = 1) OR (Job.TwCountry != ? AND Job.TwCountryTarget LIKE %?%))",
    array($site,$site,$site)
)

不同之处在于此Propel方法具有类型感知功能,因此会自动引用您的LIKE参数。

答案 1 :(得分:0)

从查询中移动通配符,并将其放在参数上:

->where("((Job.TwCountry = ? AND Job.TwAbroad = 1) OR (Job.TwCountry != ? AND Job.TwCountryTarget LIKE ?))", array($site,$site,'%' . $site . '%'))