Home  >  Article  >  Backend Development  >  请教 php中数组做为mysql查询条件 where xx in array,怎么处理

请教 php中数组做为mysql查询条件 where xx in array,怎么处理

WBOY
WBOYOriginal
2016-06-23 13:31:071181browse

原先想着把数组 $customerid 拆分出来,判断长度给不同的变量,变量多少还要再判断,然后写 下边的mysql查询,有些麻烦,请教有没有好的方法,谢了!

---------------------------------------------
$customerid:

array (size=2)
  0 => string '5' (length=1)
  1 => string '14' (length=2)
----------------------------------------------

$customer->where("id in ".$customerid)->count();     //是这个意思,当然,数组直接放这里是不对的


回复讨论(解决方案)

因为要统计 count,下边的mysql语句 ,最好是一条。 循环一条 一条的查询,也不好。

foreach ($customerid as &$value) {
                $count = $customer->where("id in "."($value)")->count();
                $arrcount[] = $count; 
            }
       
            $count = 0;
            foreach ($arrcount as &$value) {
                $count = $count + $value;
            }

解决了,新问题又来了

怎么控制,不同条件, (显示前10条记录)
比如说
where("id in ".(3)) 有2条
where("id in ".(2)) 有1条

实际上是,每个用户收藏了哪些产品。 一个用户可能收藏好多个
我要显示它们汇总的前10条  ,用联合查询,又不知道联多少次,再循环算次数,好麻烦。
难道最好的办法是改表结构? 

在产品表中,加一个 userid? 一个用户可以收藏不同的产品? 好像这样设计可以

第一个问题,如果是查单一id,直接id = xx就可以,没必要用in
如果想查多个id,把数组用implode函数组合成id in (1, 2, 3) 这种格式的字符串
最后的问题,如果你的需求是输出用户列表,同时输出每个人前10条收藏,就要考虑缓存了




every cool
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn