我试图编写一个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脚本中,我试图:
row[1]
semesterID
,然后回显它row['c1']
到row['c7']
列classname
和classlvl
问题:
代码实际上适用于第一个for循环,但之后它显示Notice: Undefined Index
c2
到c7
我已经尝试过研究解决方案,但我只是看到了这个通知,脚本试图接收POST
值......他们建议使用isset并检查变量,但我&#39 ;我不确定在这种情况下它是如何适用的。
答案 0 :(得分:5)
我认为这一行会导致您的麻烦
$row=mysqli_fetch_array($result);
它在您的子环路中,并且您覆盖外部循环的$row
变量,因此它的列在2到7的运行中不可用。重命名其中一个。