PHP MYSQL嵌套,而循环跳过迭代
需要帮助才能完成此嵌套WHILE循环 情况是 这是我数据库中的5个表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、
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上问