請教 php中數組做為mysql查詢條件 where xx in array,怎麼處理

來源:互聯網
上載者:User
原先想著把數組 $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
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.