在我們日常使用php進行數據CRUD時,一定會遇到根據數據庫的某字段查詢另外一個數據庫中的信息,但是當我們根據需求拿到第一個數據庫中的某個字段時有多個值的時候,如何將多個值分別查詢出我們最終想要的信息,最後整合到一個數組中,這就有點難度了 (可能描述的有點不清晰)
來看demo:
需求:根據uid的值去查找數據庫,把uid爲-8363903349918055112 的gonghao字段拿出來,然後根據gonghao這個字段去獲取另一個表中的信息
sql語句:
$model = D('yuangongdangan');
$uid = I('get.uid');
$datalistarr=$del->where("uid=%s",$uid)->field('gonghao')->select();
這時我們拿到的$datalistarr返回的結果爲:
[{"gonghao":"50"},{"gonghao":"375"},{"gonghao":"503"}]
根據以上的返回結果我們肯定是拿不到我們另一個數據庫中的相關信息
實現效果的多種方式:(這裏就是直接上代碼了,就不多嗶嗶了,詳細的註釋請看代碼)
方式一:
//我們根據for循環分別拿到gonghao字段的值,然後根據這個值去查詢我們的第二個數據庫
$count = count($datalistarr);
for($i=0;$i<$count;$i++){
$data[] = $model->where("gonghao=%s",$datalistarr[$i])->order("id desc")->find();
//注意,這裏要使用find()而不是select ,select的話返回的是一個二維數組,導致我們數據達不到預期效果
}
$jsonarr = $data;
方拾二:
$data = array();
foreach ($datalistarr as $value) {
$data[] = $value['gonghao'];
}
$gonghaostr=implode(",",$data); //將數組轉換爲用逗號分隔的字符串
$wow = $model->where("gonghao in(%s)",$gonghaostr)->order("id desc")->select();//分別查詢字符串中的數據
ok,以上兩種方式都可以實現我需要的效果