Php Can';无法获取数据的值
我在获取查询的结果值时遇到问题,错误是<代码> 注意:未定义的索引:C:\xampp\htdocs\gradingxworking\teacher\student.php中的prelim,第85行有人能帮我解决这个问题吗,或者有什么线索可以解决这个问题吗?我刚刚开始学习phpPhp Can';无法获取数据的值,php,Php,我在获取查询的结果值时遇到问题,错误是 注意:未定义的索引:C:\xampp\htdocs\gradingxworking\teacher\student.php中的prelim,第85行有人能帮我解决这个问题吗,或者有什么线索可以解决这个问题吗?我刚刚开始学习php <tbody> <?php $c=1; ?> <?php foreach($mystudent as $row): ?> <tr>
<tbody>
<?php $c=1; ?>
<?php foreach($mystudent as $row): ?>
<tr>
<td><?php echo $c; ?></td>
<td class="text-center"><?php echo $row['studid']; ?></td>
<td class="text-center"><?php echo $row['lname'].', '.$row['fname']; ?></td>
<?php $grade = $student->getstudentgrade($row['studid']);?>
//code that cause error line 85--> <td class="text-center"><?php echo $grade['prelim']; ?></td>
</tr>
<?php $c++; ?>
<?php endforeach; ?>
<?php if(!$mystudent): ?>
<tr><td colspan="8" class="text-center text-danger"><strong>*** No Result ***</strong></td></tr>
<?php endif; ?>
</tbody>
之后
<?php $grade = $student->getstudentgrade($row['studid']);?>
根据getstudentgrade函数,您将获得多维数组结果,您可能需要将$grade['prelim']更改为$grade[0]['prelim']正如@Bara建议的那样,您需要在访问数组之前先检查数组 $grade['prelim']
if(isset($grade['prelim']))
我怀疑,没有特定studid
的数据。让我们看看你的功能
$data = array();
while($row = mysql_fetch_array($r)){
$data[] = array(
'prelim' => $row['prelim']
);
}
现在,您已经创建了新的数组$data
。但是,如果没有记录?您的while
循环将不会执行,并且您的$data
数组将不会有任何内容。正确的?所以,要处理这个问题,需要检查数组中是否有数据
现在,第二点,@Mossavari提出的也是正确的。你需要使用
$grade[0]['prelim'];
而不是
$grade['prelim'];
因为,每个学生只有一个年级。那么,为什么要使用数组呢
<?php
function getstudentgrade($studid){
$q = "select * from studentsubject where studid=$studid LIMIT 0,1";
$data = "";
$r = mysql_query($q);
while($row = mysql_fetch_array($r)){
$data = $row['prelim'];
}
return $data;
}?>
PHP
<tbody>
<?php $c=1; ?>
<?php foreach($mystudent as $row): ?>
<tr>
<td><?php echo $c; ?></td>
<td class="text-center"><?php echo $row['studid']; ?></td>
<td class="text-center"><?php echo $row['lname'].', '.$row['fname']; ?></td>
<td class="text-center"><?php echo $grade = $student->getstudentgrade($row['studid']);?></td>
</tr>
<?php $c++; ?>
<?php endforeach; ?>
<?php if(!$mystudent): ?>
<tr>
<td colspan="8" class="text-center text-danger">
<strong>*** No Result ***</strong>
</td>
</tr>
<?php endif; ?>
</tbody>
***无结果***
mysql.*
在PHP5.5中被弃用,在PHP7中被删除。请开始使用mysqli.*
或PDO
@SuperDJ是的,我会更改它。您的studentsubject
表中是否有prelim
列?您的表中是否有特定学生id的数据?@SuperDJ是的sir请完整阅读我的帖子。为了避免进一步的混乱。是的。我已经编辑并记录了你的建议,效果很好,先生。因为分数在不同的表格中。实际上,在这个表中,它有两个功能。$studid
处于不同的函数中,因此我需要获得另一个函数来获得分数。我理解这一点。但是,因为每个学生只有一个年级。那么,为什么要为@nethkennnthen使用数组呢?先生,用什么呢?我刚刚开始学习php和sql。我不知道这是否是一个好的做法。对不起,没问题。看见仅当存在多个值时才使用数组。但是,在你的情况下,每个学生只有一个年级。所以,我想说的是:为什么要使用数组来存储等级@荷兰
$grade['prelim'];
<?php
function getstudentgrade($studid){
$q = "select * from studentsubject where studid=$studid LIMIT 0,1";
$data = "";
$r = mysql_query($q);
while($row = mysql_fetch_array($r)){
$data = $row['prelim'];
}
return $data;
}?>
<tbody>
<?php $c=1; ?>
<?php foreach($mystudent as $row): ?>
<tr>
<td><?php echo $c; ?></td>
<td class="text-center"><?php echo $row['studid']; ?></td>
<td class="text-center"><?php echo $row['lname'].', '.$row['fname']; ?></td>
<td class="text-center"><?php echo $grade = $student->getstudentgrade($row['studid']);?></td>
</tr>
<?php $c++; ?>
<?php endforeach; ?>
<?php if(!$mystudent): ?>
<tr>
<td colspan="8" class="text-center text-danger">
<strong>*** No Result ***</strong>
</td>
</tr>
<?php endif; ?>
</tbody>