无法获取数据PHP

时间:2017-08-23 09:01:41

标签: php

我无法获取查询的结果值,但错误说明了。 Notice: Undefined index: prelim in C:\xampp\htdocs\gradingxworking\teacher\student.php on line 85有人可以帮助我解决这个或一些线索来解决这个问题吗?我刚开始学习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>  
            <?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>

功能:

function getstudentgrade($studid){
    $q = "select * from studentsubject where studid=$studid";
    $r = mysql_query($q);
    $data = array();
       while($row = mysql_fetch_array($r)){
                $data[] = array(
        'prelim' => $row['prelim']
        );
    } 

    return $data;

}

4 个答案:

答案 0 :(得分:0)

完成后

<?php $grade = $student->getstudentgrade($row['studid']);?>

您需要查看$grade的内容。在尝试从数组中获取数据之前,它会更好地进行检查:

if(isset($grade['prelim']))

答案 1 :(得分:0)

根据您的getstudentgrade功能,您将拥有多维数组结果,您可能需要将

$grade['prelim']
更改为
$grade[0]['prelim']

答案 2 :(得分:0)

正如@Bara建议的那样,您需要先检查数组才能访问它。

if(isset($grade['prelim']))

我怀疑,没有特定studid的数据。让我们看看你的功能。

$data = array();
   while($row = mysql_fetch_array($r)){
            $data[] = array(
    'prelim' => $row['prelim']
    );
} 

现在,您已创建新阵列$data。但是,如果没有记录?您的while循环将不会被执行,而您的$data数组将不会执行任何操作。对 ?因此,要处理这个问题,您需要检查阵列中是否有任何数据。

现在,@ Moskari所做的第二点也是正确的。你需要使用

$grade[0]['prelim'];

而不是

$grade['prelim'];

答案 3 :(得分:0)

因为,每个学生只有1年级。那么,为什么要使用数组。

<?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>