在我们日常使用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,以上两种方式都可以实现我需要的效果