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

Mic*_*ayo 0 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.'';
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

数据库信息

学期表由以下内容组成:

| mem_id [0] |semnum [1] | semname [2] | c1 [etc...] | c2 | c3 | c4 | c5 | c6 | c7 |
Run Code Online (Sandbox Code Playgroud)

在这个PHP脚本中我试图:

  • 抓住所有学期的特定mem_id
  • 创建一个while循环来抓取row[1] semesterID当前学期,然后回显它
  • 创建一个for循环抢列row['c1']通过row['c7']的电流学期
  • 检查列值是否不为零,并在allclasses表中找到该值
  • 终于回应了classnameclasslvl

问题:

该代码实际工作的第一个for循环但后来它显示Notice: Undefined Indexc2通过c7

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

bis*_*ish 5

我认为这条线会给你带来麻烦

 $row=mysqli_fetch_array($result);
Run Code Online (Sandbox Code Playgroud)

它位于你的子环路中,你覆盖$row外部循环的变量,因此它的列在2到7的运行中不再可用.重命名其中一个.