PHP MYSQL嵌套,而循环跳过迭代

PHP MYSQL嵌套,而循环跳过迭代,php,mysql,json,Php,Mysql,Json,需要帮助才能完成此嵌套WHILE循环 情况是 这是我数据库中的5个表 user_info(userid,name,picurl) user_friends(userid,friend_id) user_post(userid,post_id,post,time) user_likes(userid,post_id) user_comments(userid,post_id) 我想访问user_post表并在我的android应用程序中填充数据。我可以从user\u post表访问userid、

需要帮助才能完成此嵌套WHILE循环

情况是

这是我数据库中的5个表

user_info(userid,name,picurl)
user_friends(userid,friend_id)
user_post(userid,post_id,post,time)
user_likes(userid,post_id)
user_comments(userid,post_id)
我想访问user_post表并在我的android应用程序中填充数据。我可以从user\u post表访问userid、post\u id和时间,并使用friends表中用户的friends\u id。现在,要显示一个完整的帖子,我需要从user_info表中访问帖子作者的姓名和picurl。如果我需要显示一篇1个朋友的帖子,我可以简单地做到这一点,但是当有两个朋友发表了超过1篇帖子时,我无法获取用户的姓名和picurl,并且在json响应中显示null。 我正在为此操作使用嵌套While循环,下面是我的代码

$userid = $_POST['userid'];

$query = "SELECT * FROM user_friend WHERE userid = '$userid'";
$result = mysql_query($query);

$return_arr = array();
$return_arr['newsfeed'] = array();

//Access userid
while($row = mysql_fetch_assoc($result))    {

echo "Friend Name is ".$row['friend_id']. "<br>";       

$friend_id = $row['friend_id'];
$friend_id = mysql_real_escape_string($friend_id);

//accessing user_info table to access user info
$picquery = "SELECT * FROM user_info WHERE userid = '$friend_id'";
$picresult = mysql_query($picquery);

$pic = mysql_fetch_assoc($picresult);

$row_array['name'] = $pic['name'];
$row_array['picurl'] = $pic['picurl'];

$query2 = "SELECT * FROM user_post WHERE userid = '$friend_id'";
$result2 = mysql_query($query2);

//Access Posts Against userids
    while( $row = mysql_fetch_array($result2) ) {

                $post_id = $row['post_id'];

                //for number of likes
                $likesQuery = "SELECT COUNT(*) as totallikes FROM post_likes        WHERE post_id = '$post_id'";
                $likesResult = mysql_query($likesQuery);
                $likesvalues = mysql_fetch_assoc($likesResult); 
                $num_of_likes = $likesvalues['totallikes']; 

                //for number of comments
                $commentsQuery = "SELECT COUNT(*) as totalcomments FROM post_comments WHERE post_id = '$post_id'";
                $commentsResult = mysql_query($commentsQuery);
                $commentsvalues = mysql_fetch_assoc($commentsResult); 
                $num_of_comments = $commentsvalues['totalcomments'];

        $row_array['post_id'] = $row['post_id'];
        $row_array['userid'] = $row['userid'];
        $row_array['post_text'] = $row['post_text'];
        $row_array['post_time'] = $row['post_time'];
        $row_array['post_num_likes'] = $num_of_likes;
        $row_array['post_num_comments'] = $num_of_comments;

        array_push($return_arr['newsfeed'],$row_array);

    }
}
date_default_timezone_set('Asia/Karachi');
$date = date(' h:i:s a d/m/Y', time());         
echo json_encode($return_arr,JSON_UNESCAPED_SLASHES);
$userid=$\u POST['userid'];
$query=“从用户\朋友中选择*,其中userid='$userid';
$result=mysql\u query($query);
$return_arr=array();
$return_arr['newsfeed']=array();
//访问用户ID
while($row=mysql\u fetch\u assoc($result)){
echo“好友名称为”。$row['Friend_id']。”
; $friend_id=$row['friend_id']; $friend\u id=mysql\u real\u escape\u字符串($friend\u id); //访问用户信息表以访问用户信息 $picquery=“从用户信息中选择*,其中用户id='$friend\U id'; $picresult=mysql\u查询($picquery); $pic=mysql\u fetch\u assoc($picresult); $row_数组['name']=$pic['name']; $row_数组['picurl']=$pic['picurl']; $query2=“从用户帖子中选择*,其中用户id='$friend\U id'; $result2=mysql\u查询($query2); //根据用户ID访问帖子 while($row=mysql\u fetch\u数组($result2)){ $post_id=$row['post_id']; //喜欢多少 $likesQuery=“选择COUNT(*)作为post\u likes中的totalikes,其中post\u id='$post\u id'; $likesResult=mysql\u查询($likesQuery); $likesvalues=mysql\u fetch\u assoc($likesResult); $num_of_likes=$likesvalues['totallikes']; //关于评论的数量 $commentsQuery=“选择COUNT(*)作为post_comments中的totalcomments,其中post_id='$post_id'; $commentsResult=mysql\u查询($commentsQuery); $commentsvalues=mysql\u fetch\u assoc($commentsResult); $num_of_comments=$commentsvalues['totalcomments']; $row_数组['post_id']=$row['post_id']; $row_数组['userid']=$row['userid']; $row_数组['post_text']=$row['post_text']; $row_数组['post_time']=$row['post_time']; $row_数组['post_num_likes']=$num_of_likes; $row_数组['post_num_comments']=$num_of_comments; 数组推送($return\u arr['newsfeed',$row\u数组); } } 日期默认时区设置(“亚洲/卡拉奇”); $date=日期('h:i:s a d/m/Y',time()); echo json_encode($return_arr,json_unscaped_SLASHES);
类似的东西可能会有所帮助。由于我没有任何测试数据,我看不出它是如何工作的。它应该显示post_id以及喜欢和评论的数量

SELECT
  p.post_id,
  COUNT(c.post_id) AS comments_count,
  COUNT(l.post_id) AS like_count
FROM user_post p,
     user_likes l,
     user_comments c
WHERE p.post_id = l.post_id
AND p.post_id = c.post
GROUP BY p.post_id

$picresult查询仅返回第一个用户的picurl和名称/相同用户名。。其他用户为空。请为totalcomments、Totalikes、user\u post、user\u info和user\u friend添加您的db结构。我认为通过一个简单的查询,就可以更容易地获取您想要的大部分信息。一些虚拟数据也有帮助。您可以使用更简单的ShareTotalIkes和totalcomments,它们只是SELECT COUNT函数返回的数值,用于显示帖子的评论和喜欢的数量。表结构是user\u post(userid,post\id,post\u text,post\u time)user\u info(userid,name,picurl)user\u friend(userid,friend\u id)from user\u friend表朋友id将在user\u post表中使用并匹配(friend\u id from friend表将是user\u post中的userid)访问朋友的帖子,获取所需的所有数据..和@davejal,如果你能提出一个简单的查询,那就太好了。。几天来我一直在努力找出我的错误。。尝试了很多我在网上看到的东西,但是没有用。。如果你能帮我的话…好的,现在在安卓方面。。您能帮我使用列表视图和列表视图适配器吗?我完全不懂android。我喜欢sql和编码(php使用laravel),但还没有看过android。这将是我的下一步。抱歉,这帮不了你,但当你在做研究后遇到问题时,你可以在stackoverflow上问