好吧,在我的头靠在墙上大约2个小时之后,我需要帮助。我有一个查询,根据用户“关注者”提取“评论”。关注者有一个唯一的id,让我们说只是为了方便使用,他们的id是4和5.查询返回所有关注者,所以可能不仅仅是两行。该查询创建了一个foreach,我想对每个“跟随者”执行此查询。然后,该查询需要创建一个fetch_assoc(),以便稍后可以在页面上调用数据。我现在拥有代码的方式,它只显示来自关注者4的帖子,而不是5.我尝试使用计数器来附加变量名称,这样它们每次都不会被覆盖,但它没有帮助。非常感谢!
$sqlb ="SELECT myfriend_ID FROM friends WHERE my_id = '$myuid'";
$resultb = mysql_query($sqlb,$db);
$numa = mysql_num_rows($resultb);
if($numa)
{
while(($follower = mysql_fetch_assoc($resultb))) {
$followers[] = $follower;
}
}
$i=0;
foreach($followers as $follower)
{
$i++;
$fnub = $follower['myfollower_ID'];//this will print 4 and 5
$fnum = $fnub;
$sql = "SELECT * FROM usr, feed, course WHERE usr.usr_id = '$fnum' AND
feed.usr_id = '$fnum' AND course.usr_id = '$fnum' ORDER BY Feed_ID desc";
$result = mysql_query($sql,$db);
$num.$fnum = mysql_num_rows($result);
if($num.$fnum)
{
while(($feed = mysql_fetch_assoc($result))) {
$feeds[] = $feed;
}
foreach($feeds as $feed)
{
echo $feed['comment'];
}
}
}
答案 0 :(得分:1)
$sqlb ="SELECT myfriend_ID FROM friends WHERE my_id = '$myuid'";
$resultb = mysql_query($sqlb,$db);
$follower = array();
if(mysql_num_rows($resultb))
{
while(($follower = mysql_fetch_assoc($resultb))) {
$fnum = $follower['myfriend_ID'];//what is the column name
$sql = "SELECT * FROM usr, feed, course WHERE usr.usr_id = '$fnum' AND feed.usr_id = '$fnum' AND course.usr_id = '$fnum' ORDER BY Feed_ID desc";
$result = mysql_query($sql,$db);
if( mysql_num_rows($result))
{
while(($feed = mysql_fetch_assoc($result))) {
echo $feed['comment'];
}
}
}
您必须将这两个查询合并为一个。但我在SQL方面不太好。 可能还有其他人可以提供帮助。
答案 1 :(得分:0)
你分配$ i,然后你在foreach中增加$ i,但是你从不使用$ i来做任何事情,我不确定那个计数器应该做什么。我不确定你为什么要为$ fnub的值分配第二个变量,为什么不每次只使用$ fnub?稍后你使用(我们只能假设的是)一个空的$ num变量并在其前面添加$ fnum - 我不知道为什么 - 或者为什么你必须为num行分配任何东西,只需使用if中的函数因为它看起来是你使用$ num。$ fnum。
的唯一实例你可以完全取出你的最后一个foreach并将该循环的内容移动到它之前,因为它们都在迭代相同的数据,只需分配值,然后在那里回显$ feed ['comment'] ,然后它将移动指针,并为您自己准备好下一个值。