【问题标题】:foreach not working in codeigniterforeach 在 codeigniter 中不起作用
【发布时间】:2014-09-16 15:53:17
【问题描述】:

我目前是数据库查询的新手,codeigniter 的其他方面似乎无法完全让模型为我所追求的工作。

我已尝试将 db 直接加载到控制器,并且效果很好。但是如果我打电话给我的模型不想工作,什么都不会出现。

这是我想要实现的目标。

控制器

public function website_test_model() {

    $this->load->model('admin/website/model_website');

    $results = $this->model_website->getWebsites();

    $data['websites'] = array();

        foreach ($results as $result) {
            $data['websites'] = array(
                'website_id' => $result['website_id'],
                'name' => $result['name'],
                'url' => $result['url']
            );
        }

    $this->load->view('website/websites', $data);
   }

查看

<!-- Not Working From Controller Function Model Test -->

<?php if ($websites) { ?>
<?php foreach ($websites as $website) { ?>

<?php echo $website['website_id'];?>

<br>

<?php echo $website['name'];?>

<br>

<?php echo $website['url'];?>

<?php } ?>
<?php } ?>

型号

<?php

class Model_website extends CI_Model {

  function getWebsites() {
        $this->db->select('*');
        $this->db->from('website');
      $this->db->where('website_id');
      $this->db->where('name');
      $this->db->where('url');
      $query = $this->db->get();

      if($query->num_rows() > 0) {
        return $query->row();
      } else {
        return false;
      }
  }


}

Codeigniter 演示 当我按照 codeigniter 用户指南中所述的方式尝试时,它可以工作。只是上面的代码是我追求的方式,尽管试图让模型工作没有运气

public function website() {

    $results = $this->db->get('website'); // Works Direct From Controller OK.

        foreach ($results->result() as $row) {
            $data = array(
                'website_id' => $row->website_id,
                'name' => $row->name,
                'url' => $row->url
            );
        }

    $this->load->view('website/website', $data);
   }

【问题讨论】:

  • 在将其分配给 $data['website'] 之前尝试执行 print_r($results)
  • 只需刷新页面,现在为 foreach() 提供的参数无效
  • @acoderslife 因为$results 返回错误;
  • @acoderslife 检查您的查询以启用探查器,确保您的所有 where 条件都能正常工作,因为 $results = $this-&gt;db-&gt;get('website'); 与您的模型查询不同。
  • 完成后,探查器上没有显示任何内容,但错误为 foreach() 提供了无效参数

标签: php codeigniter


【解决方案1】:

你在模型文件中做错了

<?php

class Model_website extends CI_Model {

  function getWebsites() {
       $query =$this->db->get('website');

      if($query->num_rows() > 0) {
        return $query->result();
      } 
  }


}

1) 在您的模型中,您使用 where 条件但 $this-&gt;db-&gt;where('website_id'); 但您没有在您的条件下传递任何内容,您必须这样做 $this-&gt;db-&gt;where('website_id',$yourwebsite_id);

【讨论】:

    【解决方案2】:

    您必须检查模型中的数据库查询是否返回结果。

    在模型中使用这个查询

     $this->db->last_query();    
    

    【讨论】:

      【解决方案3】:

      在模型中使用此查询

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

      传递这个查询来查看然后使用这个foreach

      foreach ($query->result() as $row)
      {
          <?php echo $row->website_id; ?>
          <br>
          <?php echo $row->name;?>
          <br>
          <?php echo $row->url;?>
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-14
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2012-12-16
        • 2014-12-23
        • 2018-04-23
        相关资源
        最近更新 更多