【问题标题】:foreach error with codeigniter使用codeigniter的foreach错误
【发布时间】:2011-04-23 07:20:54
【问题描述】:

嘿,我正在使用 codeigniter,我收到了这个错误

遇到了 PHP 错误

严重性:通知

消息:未定义变量:查询

文件名:views/nyheder_view.php

行号:2 遇到 PHP 错误

严重性:警告

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

文件名:views/nyheder_view.php

行号:2

我的控制器:

   <?php

class Nyheder extends Controller {

 function index()
    {
  $data['content'] = 'nyheder_view';
   $this->load->view('includes/template', $data);

    }

 function vis()
 {
  //parent::controller();
  $this->load->model('nyheder_model');
  $data['query'] = $this->nyheder_model->load_nyheder();

  $this->load->view('nyheder_view', $data);

 }
}
?>

我的看法

<?php foreach($query as $row) : ?>
<h1><?php echo $row->overskrift; ?></h1>
<p><?php echo $row->indhold; ?></p>
<?php endforeach;?>

【问题讨论】:

  • 也请告诉我们nyheder_model
  • 正如其他人所建议的,您的 $this->nyheder_model->load_nyheder();必须返回 null 或 false。

标签: codeigniter foreach


【解决方案1】:

我在这里没有立即看到任何错误。您能否在加载 nyheader_view 之前输入此行:

die(var_export($data));

让我们知道你看到了什么。

【讨论】:

    【解决方案2】:

    我猜 $this->nyheder_model->load_nyheder() 返回 false 或 null。

    在加载视图之前尝试 var_dump($this->nyheder_model->load_nyheder())。

    您的 nyheder 模型中的 sql 查询可能有问题?

    【讨论】:

      【解决方案3】:

      我同意问题可能出在您的模型中...或者可能更明显,例如未激活数据库选项...尝试:

       function __construct(){
                parent::Controller(); 
      
                $this->load->database();
        }
      

      【讨论】:

        【解决方案4】:

        可以猜测 load_nyheder() 是返回一个对象还是一个数组 所以首先通过硬编码和排列一些类似这样的东西来检查管道:

        $data['query'] = array(
                    'keystr1' => 'valuestr1',
                    'keystr2' => 'valuestr2',
                    'keystr3' => 'valuestr3'
                               );
        $this->load->view('nyheder_view', $data);
        

        注意:如果你把一个对象作为 $data ,它将被转换为一个数组。

        然后在你看来“nyheder_view”做一些类似这样的事情:

        <?php foreach($query as $someKey=>$someValue):?>
            <h1><?php echo $someKey; ?></h1>
            <p><?php echo $someValue; ?></p>
        <?php endforeach;?>
        

        首先使用硬编码的测试(夹具)数据,然后尝试使用您的 load_nyheder() 输入 $data['query'] 并查看是否遇到类似问题。这样你就知道问题出在哪里了。

        【讨论】:

          【解决方案5】:

          试试这个,我认为你在 $query 之后错过了 result()...

          <?php foreach($query->result() as $row) : ?>
             <h1><?php echo $row->overskrift; ?></h1>
             <p><?php echo $row->indhold; ?></p>
          <?php endforeach;?>
          

          【讨论】:

          • 你只是在一个未定义的变量上调用 result(),这不会解决任何问题
          猜你喜欢
          • 2017-07-25
          • 2013-11-09
          • 2019-01-14
          • 2015-01-19
          • 1970-01-01
          • 1970-01-01
          • 2014-10-20
          • 1970-01-01
          • 2015-06-23
          相关资源
          最近更新 更多