Php 如何将多个参数传递给Zend_Db_Select?

Php 如何将多个参数传递给Zend_Db_Select?,php,sql,zend-framework,zend-db,Php,Sql,Zend Framework,Zend Db,我是一个ZF初学者,我无法通过谷歌搜索找到答案。 我有这样的想法: $query->where('sc.year BETWEEN ? AND ?', array($startYear, $endYear)); 如您所见,我尝试传递数组中的2个参数。但它不起作用。我做了一个简单的测试: $query->where("sc.year BETWEEN ? AND ?",array(1,2)) ->where("sc.week BETWEEN IF(year = ?, ?, 1) A

我是一个ZF初学者,我无法通过谷歌搜索找到答案。 我有这样的想法:

$query->where('sc.year BETWEEN ? AND ?', array($startYear, $endYear));
如您所见,我尝试传递数组中的2个参数。但它不起作用。我做了一个简单的测试:

$query->where("sc.year BETWEEN ? AND ?",array(1,2))
->where("sc.week BETWEEN IF(year = ?, ?, 1) AND IF(year = ?, ?,53)",array(3,4,5,6));
我希望在原始SQL中看到的是:

...WHERE (sc.year BETWEEN 1 AND 2) AND (sc.week BETWEEN IF(year = 3, 4, 1) AND IF(year = 5, 6, 53))
我真正看到的是:

...WHERE (sc.year BETWEEN 1, 2 AND 1, 2) AND (sc.week BETWEEN IF(year = 3, 4, 5, 6, 3, 4, 5, 6, 1) AND IF(year = 3, 4, 5, 6, 3, 4, 5, 6, 53)) 
所以ZF只是将数组转换为字符串,并像插入单个参数一样插入它

我还尝试了一些原生PHP风格的东西:

$query->where('sc.year BETWEEN ? AND ?', $startYear, $endYear);
它仍然不起作用


我知道,我可以使用sprintf之类的字符串函数,但我想了解如何以正确的方式通过Zend_Db传递多个参数。

您可以尝试$query->wheresc.year,介于$startYear和$endYear之间@穆罕默德·泽山,谢谢!这真是一个漂亮的解决方案!但我认为,以这种方式传递的参数不会正确地引用到语句中。无论如何,这对我来说是可行的,因为我使用简单的整数参数。您的第一个代码示例就是正确的方法。你能提供更多关于为什么这不起作用的信息吗?如果您回显$query以输出SQL,您会得到什么?@TimFountain我已经编辑了这个问题,请参见上文。根据您得到的输出,似乎$startYear和$endYear已经是数组了。你确定它们只是整数吗?