MySQL-php查询数据再根据结果循环查询

发布于 2016-10-31 22:48:52 字数 581 浏览 1184 评论 2

字段:

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];
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜柠檬 2017-10-10 08:45:21

SELECT vid , GROUP_CONCAT(id,'|') FROM A
WHERE id=vid
GROUP BY vid

这样行么?

修订:
lz的意思是否就是提取出 以 vid 分组的 记录列表呢

那 SELECT vid , GROUP_CONCAT(id) FROM p1 GROUP BY vid 就能满足lz呢?

你取出 每个uid对应的 vid 假设其为x,然后去取出 表中vid = x 的记录

换个方向来想 是不是 就是以 vid 分组呢?

如果想取出某个用户对应的 vid的 是否可以使用
SELECT vid , GROUP_CONCAT(id) FROM p1
WHERE vid IN ( SELECT vid FROM p1 WHERE NAME='D' )
GROUP BY vid

测试表结构如下:
CREATE TABLE p1 (
id int(11) NOT NULL,
name char(40) NOT NULL,
vid int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

泛泛之交 2017-10-07 22:50:02

这种需求直接 用数据库查询够瞧的.
建议如果可以的话, 把id和vid 从数据库一次查询出来, 在php中做两个hash.

id_vid:
1: ;
2:1;
3:2;
4:3;
5:3;
6:4.

vid_id
1:[2];
2:[3];
3:[4,5]
4:[6]

php程序递归查找, 伪码:

function search(id){
vid=id_vid[id];
ids=vid_id[vid]
foreach id1 in ids:
search(id);
}

注意不要有id和vid循环查询的情况.

更新一下
网上找了一下 大概的计算php数组大小的方法:

$before=memory_get_usage();
$arr=array();
for($i=10000000;$i<15000000;$i++){ //500w数据
$arr[$i]=$i+100;
}
$after=memory_get_usage();
print_r(($after-$before)/1024/1024);

如果id为数字型, 通过上面的脚本算一下, php5.4.3, win7 x64:
100w的数组, 占用内存大小为130m;
500w的数组, 占用内存大小为674m;
1000w的数组, 为1349m.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文