PHP For循环接收通知:未定义的索引

时间:2015-01-09 06:24:36

标签: php mysql undefined

我试图编写一个php脚本,通过首先创建一个while循环来查询用户注册的学期的数据库。然后我尝试创建一个for循环,以确定他们注册的类的名称和级别。

//USER ID
$id=1;

//SEMESTER QUERY
$qry="SELECT * FROM semesters where mem_id='$id'";
$result=mysqli_query($con, $qry);

    //GRAB VALUES FROM CURRENT SEMESTER
    while ($row=mysqli_fetch_array($result)){
    $semesterID = $row[1];
    echo '<div id="s'.$semesterID.'">';

        //FOR LOOP TO GRAB ROWS['c1'] TO ['c7']
        for ($i = 1; $i <= 7; $i++) 
        {
        $class = $row['c'.$i.''];

            //IF CLASS_ID IS VALID CONTINUE SEARCH
            if ($class!=0){
            $qry="SELECT * FROM allclasses where class_id='$class'";
            $result=mysqli_query($con, $qry);
            $row=mysqli_fetch_array($result);
            $classname = $row[1];
            $classlvl = $row[2];
            echo ''.$classname.' '.$classlvl.'';
            }
        }
    }

数据库信息

学期表如下:

| mem_id [0] |semnum [1] | semname [2] | c1 [etc...] | c2 | c3 | c4 | c5 | c6 | c7 |

在这个PHP脚本中,我试图:

  • 获取特定mem_id的所有学期
  • 创建一个while循环来抓取当前学期的row[1] semesterID,然后回显它
  • 为当前学期创建一个for循环以抓取row['c1']row['c7']
  • 检查列值是否为零,并在allclasses表中找到该值
  • 最后回复classnameclasslvl

问题:

代码实际上适用于第一个for循环,但之后它显示Notice: Undefined Index c2c7

我已经尝试过研究解决方案,但我只是看到了这个通知,脚本试图接收POST值......他们建议使用isset并检查变量,但我&#39 ;我不确定在这种情况下它是如何适用的。

1 个答案:

答案 0 :(得分:5)

我认为这一行会导致您的麻烦

 $row=mysqli_fetch_array($result);

它在您的子环路中,并且您覆盖外部循环的$row变量,因此它的列在2到7的运行中不可用。重命名其中一个。