Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在嵌套的foreach循环中使用嵌套查询_Php_Mysql_Sql_Loops - Fatal编程技术网

Php 在嵌套的foreach循环中使用嵌套查询

Php 在嵌套的foreach循环中使用嵌套查询,php,mysql,sql,loops,Php,Mysql,Sql,Loops,好吧,在我的头撞在墙上大约两个小时后,我需要帮助。我有一个查询,根据用户的“关注者”获取“评论”。追随者有一个唯一的id,可以说只是为了方便使用,他们的id是4和5。查询返回所有跟随者,因此可能不止两行。该查询为执行该查询的每个“跟随者”创建一个foreach。然后,该查询需要创建一个fetch_assoc(),以便稍后在页面上调用数据。我现在有代码的方式是,它只显示跟随者4的帖子,而不是5的帖子。我曾尝试使用计数器来附加变量名,这样它们就不会每次都被覆盖,但这并没有帮助。非常感谢 $sqlb

好吧,在我的头撞在墙上大约两个小时后,我需要帮助。我有一个查询,根据用户的“关注者”获取“评论”。追随者有一个唯一的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'];
        }
    }
}
您必须将这两个查询合并为一个查询。但是我的SQL不是很好。 也许其他人能帮上忙

您必须将这两个查询合并为一个查询。但是我的SQL不是很好。
也许其他人能帮上忙。

您分配$i,然后在foreach中增加$i,但您从不将$i用于任何其他用途,我不确定该计数器应该做什么。我不确定为什么要为$fnub的值指定第二个变量,为什么不每次都使用$fnub呢?稍后您将使用(我们只能假设是)一个空$num变量并在$fnum前面加上它-我不知道为什么-甚至为什么您必须为num行分配任何内容,只需使用if中的函数,因为它看起来是您使用$num.$fnum的唯一实例


您可以将最后一个foreach完全取出,并将该循环的内容移动到之前的while中,因为它们都在重复相同的数据,只需分配值,然后将$feed['comment']回送到那里,然后它将移动指针并自行准备下一个值。

您分配$i,然后你在foreach中增加$i,但是你从不在其他任何地方使用$i,我不确定计数器应该做什么。我不确定为什么要为$fnub的值指定第二个变量,为什么不每次都使用$fnub呢?稍后您将使用(我们只能假设是)一个空$num变量并在$fnum前面加上它-我不知道为什么-甚至为什么您必须为num行分配任何内容,只需使用if中的函数,因为它看起来是您使用$num.$fnum的唯一实例


您可以将最后一个foreach完全取出,并将该循环的内容移动到之前的while中,因为它们都在重复相同的数据,只需分配值,然后将$feed['comment']返回到那里,然后它将移动指针并自行准备下一个值。

您应该真正清理代码。无用的循环,任务在那里。您正在sql查询中选择myfriend_ID,但使用myfollower_ID。可能$follower['myfollower_ID']来自其他任何地方。好的,我打算在找到如何使其工作的方法后,您看到的$i是在添加$result和$sql时留下的,就像我尝试使用$fnum和$num一样。在向stackoverflow发布某些内容时,将代码减少到最低限度是一种很好的礼仪,这样人们就不必浪费时间消除所有垃圾<例如,code>$i在这里是完全不相关的。你应该真正清理你的代码。无用的循环,任务在那里。您正在sql查询中选择myfriend_ID,但使用myfollower_ID。可能$follower['myfollower_ID']来自其他任何地方。好的,我打算在找到如何使其工作的方法后,您看到的$i是在添加$result和$sql时留下的,就像我尝试使用$fnum和$num一样。在向stackoverflow发布某些内容时,将代码减少到最低限度是一种很好的礼仪,这样人们就不必浪费时间消除所有垃圾<例如,code>$i在这里是完全不相关的。是的,它太草率了,但是$i应该用于附加其他变量,但它不起作用,所以我把它取了出来,只是我忘了删掉一些东西,比如$i和$fnum,它们大多只是实验。我想说的是,如果你把它清理干净,可能会更容易发现问题所在。现在很难读懂foreach的参数,在结尾用s命名相同的东西,然后在后面再次使用这些名称,等等。这使得我们很难记住所有的东西是什么,所有的东西都应该放在哪里,等等。是的,它很草率,但是$i应该用于附加其他变量,它不起作用,所以我把它拿出来,除了我忘了删掉一些东西,比如$I和$fnum,它们大部分都只是实验。我想说的是,如果你把它清理干净,可能会更容易发现问题所在。现在很难读懂foreach的论点,因为你在结尾用s来命名相同的东西,然后再使用这些名字,等等。这使得你很难记住所有的东西是什么,应该放在哪里,等等。
$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'];
       }
    }
}