php查询数据,再根据得出的结果循环查询

菜鸟中的小公鸡 发布于 2013/06/25 15:08
阅读 4K+
收藏 0

字段:

id  user  pwd  vid
1    a    123   
2    b    345   1
3    c    567   2 
4    d    789   3
5    e    012   3
6    f    345   4

$user=$_POST['user'];
$s="select * from `tabe` where `user` = '$user'";
$quer=mysql_query($s);
while($r=mysql_fetch_array($query)){
    $userid=$r[0];
}

if($userid){
    $sql="select * from `tabe` where `vid`='$userid'";
    $q=mysql_query($sql);
    while($row=mysql_fetch_array($q)){
        echo $row[1];
    }
}
通过输入的用户名查询出用户ID, 然后利用用户ID查询出所有字段vid等于用户ID的数据,
比如:我查a,他的ID是1,然后查询所有vid字段是1的数据得出结果b,B的ID是2,再利用2查询所有vid等于2的数据得出的结果是c,c的id是3,然后查询所有vid等于3的数据得出结果是d、e,d的id是4,e的id是5,再查询所有vid等4、5的数据得出4的结果是f,5的结果为空则停止,f的ID是6,继续用6匹配,知道结果为空。


我写了上面的一次查询后就继续不下去了,请教一下各位。谢谢!

加载中
0
blindcat
blindcat
这个难道得用递归了?
菜鸟中的小公鸡
菜鸟中的小公鸡
个人感觉是用递归,但是不知道怎么写。还在研究。
0
梅开源
梅开源

1. 貌似在做“x度人脉”?这类需求几年前社交网站盛行时候多,计算量较大,这是其数学性质决定的,不仅仅是技术问题

2. 这种需求用图数据库比较好。

3. 如果要用关系数据库,仿照“无限分类”各种思路做。

4. 可以把问题看成图中从节点a出发,获取和a连通的所有节点。


0
真座山雕
真座山雕
$userid只有一个值当然只会查询一次了。建议是不要在循环里面做查询,你可以用in子查询,这样效率会高很多
0
吕明明
吕明明

想要递归是吧,来,给你个递归~

#先查出第一个userid
$user=$_POST['user'];
$s="select id from `tabe` where `user` = '$user'";
$quer=mysql_query($s);
$r=mysql_fetch_array($query)
$userid=$r[0];
#递归查询
fu($userid);

function fu($userids)
{
    #先保证参数是数组
    if(!is_array($userids))
        $userids = array($userids);
    #把要查的id拚成一串
    $where = '("'.import('","',$userids).'")';
    #拚sql
    $sql="select id from `tabe` where `vid` in {$where}";
    $q=mysql_query($sql);
    #如果vid不存在
    if(!mysql_row_num($q))
        return ;
    #取出所有的ID
    while($row=mysql_fetch_array($q)){
        echo $row[0];
        $userids[] = $row[0];
    }
    #递归
    fu($userids);
}

0
RFC2109
RFC2109
可以找找mysql有没有树形查询
0
mark35
mark35
用mysql来完成类似需求那是在找屎
0
一品光猪
一品光猪
$user=$_POST['user'];
$s="select * from `tabe` where `user` = '$user'";
$quer=mysql_query($s);
while($r=mysql_fetch_array($query)){
    $userid=$r[0];
}

if($userid){
    search($userid);
}

$a = array();
function search($id){
    global $a;
    sql = "select * from `table` where vid='$id'";
    $query = mysql_query($sql);
    $rs = array();
    while($row = mysql_fetch_array($query)){
        $rs[] = $row;
    }
    if(!empty($rs)){
        foreach($rs as $k=>$v){
            $a[] = $v;
            search($v['id']);
        }
    }
}
//试试。
返回顶部
顶部