如何将查询结果分离,以便与其他查询结果协同响应



我一直试图在他们上传的图片上显示图片上传者的名称,但我从每个图片的查询结果中显示所有名称,或者只是从每个图片的查询结果中显示第一个名称。我试图用foreach,而for(设置$rowz[$ I]并增加$ I变量),我甚至试图创建显示名称的函数,但我总是以错误或错误的输出告终。请记住,我是php和sql的新手。

$sql="SELECT * FROM picture WHERE status=1";
$rs=doQuery($db,$sql);
$row=mysqli_fetch_array($rs);
while($row=mysqli_fetch_array($rs)){
echo"<img class='picture__img' src='{$row['url']}' >";
$sql="SELECT name FROM user u, picture p WHERE p.status=1 AND p.user_id=u.user_id";
$rz=doQuery($db,$sql);
$rowz=mysqli_fetch_array($rz);
foreach ($rowz as $k){
echo"<div class='picture__name'>{$rowz[$k]}</div>";
}
}

我解决了我的问题。感谢Magnus,当我在循环中使用多个SQL查询时,我意识到问题发生了。我使用INNER JOIN创建了一个查询来提取我需要的所有数据,并只打印所需的列。

$sql="SELECT picture.user_id, user.name, picture.url FROM picture INNER JOIN user ON picture.user_id=user.user_id WHERE picture.status=1";
$rs=doQuery($db,$sql);
$row=mysqli_fetch_array($rs);
while($row=mysqli_fetch_array($rs)){
echo"<img class='picture__img' src='{$row['url']}' >";
echo"<div class='picture__name'>{$row['name']}</div>";
}

最新更新