由于var_dump而为foreach()提供的无效参数为null

时间:2015-01-16 09:09:50

标签: php codeigniter null var-dump

昨天当我var_dump($this->m_test->result_getGrades());它给了我一个数组[1356]现在它返回null。任何人都可以帮我弄清楚它为什么是空的?我仍然是PHP和Codeigniter的新手,并且非常紧张地弄清楚为什么我无法从我的数据库中检索任何数据。

我假设我有这个错误的原因是因为($this->m_test->result_getGrades())为NULL

  

遇到PHP错误

     

严重性:警告

     

消息:为foreach()提供的参数无效

     

文件名:views / v_display.php

     

行号:7

另外,为什么我无法从数据库中检索任何数据?供将来参考

这是我的代码:

Controller c_test.php

function getGrades() {
       $data['query'] = $this->m_test->result_getGrades(); 
       $this->load->view('v_display', $data);
    }

模型m_test.php

function result_getGrades()
    {
          $this->db->select('grades.blockcode,subjectblocking.subjectcode,subjects.description,grades.final');
          $this->db->from('grades');
          $this->db->join('subjectblocking','grades.blockcode=subjectblocking.blockcode');
          $this->db->join('subjects','subjectblocking.subjectcode=subject.subjectcode');
          $this->db->where('2013-F019');
          $query=$this->db->get();          
    }

观看v_display.php

<?php foreach ($query as $row): ?>

               <?php echo $row->studentid;?><br>
               <?php echo $row->subjectcode;?><br>
               <?php echo $row->description;?><br>
               <?php echo $row->final;?><br>


         <?php endforeach; ?>

再次感谢你! :)

3 个答案:

答案 0 :(得分:3)

你应该试试这个:

首先,您需要检查where条款。

见下面的例子:

$this->db->where('name', 'test');

将在MySQL查询中生成WHERE name = 'test'

然后你必须在get()方法之后放一个return语句:

$query = $this->db->get();
return $query->result_array();

所以你的模型应该是这样的:

function result_getGrades()
{
      $this->db->select('grades.blockcode,subjectblocking.subjectcode,subjects.description,grades.final');
      $this->db->from('grades');
      $this->db->join('subjectblocking','grades.blockcode=subjectblocking.blockcode');
      $this->db->join('subjects','subjectblocking.subjectcode=subject.subjectcode');

      $this->db->where('name of field', '2013-F019');

      $query=$this->db->get();  

      return $query->result_array();        
}

答案 1 :(得分:1)

result_getGrades()功能中存在许多错误:

function result_getGrades()
{
    $this->db->select('grades.blockcode,subjectblocking.subjectcode,subjects.description,grades.final');
    $this->db->from('grades');
    $this->db->join('subjectblocking','grades.blockcode=subjectblocking.blockcode');
    $this->db->join('subjects','subjectblocking.subjectcode = subjects.subjectcode');
    $this->db->where('your_field', '2013-F019');

    $query = $this->db->get()->result();

    return $query;        
}

有:

  • 添加return $query;

  • 你的where子句中的
  • field name

  • 您在加入时
  • subjectsubjects

答案 2 :(得分:1)

var转储查询本身通常不会为我返回太多,但这取决于你何时转储它。

<?php foreach ($query as $row): ?>

           <?php echo $row->studentid;?><br>
           <?php echo $row->subjectcode;?><br>
           <?php echo $row->description;?><br>
           <?php echo $row->final;?><br>


     <?php endforeach; ?>

为此你不需要继续打开和关闭php标签,除非你想要很多html:

<?php foreach ($query as $row){

           echo $row->studentid.'<br>';
           echo $row->subjectcode.'<br>';
           echo $row->description.'<br>';
           echo $row->final.'<br>';


     }?>

注意。 ?它将$ row-&gt; studentid加入到html中,意味着它的代码更清晰。

现在问题是,你在你的foreach中将变量指定为变量......这是没有意义的。谢天谢地,我知道修复。您需要将查询转换为数据库中的结果:

<?php foreach ($query->result() as $row){

           echo $row->studentid.'<br>';
           echo $row->subjectcode.'<br>';
           echo $row->description.'<br>';
           echo $row->final.'<br>';


     }?>

$query->result() as $row将使您能够回显从数据库中获取的信息。

同样在模型的最后,您需要添加return $query;,否则您的模型将获取数据而不对其执行任何操作。