PHP mysql查询中有一个循环


php mysql query with a loop in it

我试图检索数据库中用户的结果,然后如果我的复选框被选中仅检索有照片的用户以显示这些结果,但我似乎不知道如何循环这些结果,或者我是否在正确的上下文中这样做。'

$photos = $_POST['pcbox'];
$basicsql = "SELECT * FROM users";
$basicsql .= "WHERE status > '1'";
if($photos=='1'){
    $sql = mysql_query("SELECT user_id FROM pictures GROUP BY user_id");
    while($row2 = mysql_fetch_assoc($sql))
    $options[] = " AND (users.user_id = '$row2[user_id]')";
    foreach($options as $key => $str){
        $basicsql .= $str;
    }
}
$basicsql .= " ORDER BY users.last_login DESC";
$pagesql = mysql_query($basicsql);

直到选中复选框

不能对嵌套循环使用相同的db句柄。您需要显式地为每个数据库设置db句柄。

但是,您可以在一个sql查询中完成。

观察:

Select * from users u inner join pictures p on u.id=p.user_id where status > 1

INNER JOIN将只给那些在图片表中有行的用户。

这将给你的用户只有图片。

编辑

这将给出图片的数量和只有1个用户行。

Select name,email,address,status,count(*) as num_pics from users u inner join pictures p on u.id=p.user_id group by name,email,address,status where status > 1

不确定这是否是您正在寻找的。也没有经过测试。

$photos = $_POST['pcbox'];
$basicsql = "SELECT * FROM users WHERE status > 1";
$photoSql = "SELECT * FROM users, pictures WHERE status > 1 AND users.user_id = pictures.user_id GROUP BY users.user_id ORDER BY users.last_login DESC"
if($photos=='1')
{
    $result = mysql_query($photosSql);
}
else
{
    $result = mysql_query($photoSql);
}
$photos = isset($_POST['pcbox']) ? $_POST['pcbox'] : null;
$sql = 'SELECT U.* FROM users AS U LEFT JOIN pictures AS P ON P.user_id = U.id ' . ($photos == '1' ? 'WHERE P.id IS NOT NULL') . ' GROUP BY U.id ORDER BY U.last_login DESC';
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
  // Do something with the user info, such as outputting it to a table
}

此外,在开始循环选项之前关闭while。