使用zend框架,我使用了一个查询,有一个IN子句,这是我的查询
       $select->where('p.brandid  IN (?)',$details[brand]);在上面的查询中,$detailsbrand的值类似于这个数组(1,2,3)。
实际上,查询必须返回所有与该数组(1,2,3)相关的值。
但是我的查询返回的是与上述数组(1,2,3 )中的第一个值相关的结果,.ie 1本身并不考虑其他2,3。
当我打印这个查询时,它显示如下所示
             [where] => Array
               (
                [0] => (p.brandid  IN ('1,2,3'))
              )谁能告诉我我犯了什么错误或解决办法。
发布于 2012-07-20 14:48:59
这是因为您的查询格式不正确,您可以尝试使用php中的p.brandid  IN ('1,2,3')函数。
$select->where('p.brandid  IN (?)',implode(",",$details[brand]));发布于 2015-10-16 05:08:52
只是小规模的研究,因为我也有同样的问题。
我不确定您使用的是哪个版本的Zend。但是@Omesh提供的解决方案不适用于我的1.12版本。
在我的例子中,它是完全相反的explode解决方案:
$select->where('p.brandid  IN (?)', explode(',',$details[brand]));这可能取决于$details['brand']的类型。在我的例子中,我有像555,666,777,877这样的字符串。但即使你在那里有数组。如果Zend接受string (implode的结果)而不接受array,那就很奇怪了。在我的例子中,它不接受string,但接受array。
发布于 2012-07-20 14:50:36
您可以根据Zend框架对其进行修改
locate(concat(',',$details[brand],','),concat(',',p.brandid,','))>0https://stackoverflow.com/questions/11574142
复制相似问题