->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参数的事实。有没有办法解决这个问题?
答案 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 . '%'))