【问题标题】:Get all rows form database where id=$id in codeigniter从数据库中获取所有行,其中 id=$id 在codeigniter
【发布时间】:2015-08-07 06:46:49
【问题描述】:

这是我的代码

 $this -> db -> select('*');
        $this -> db -> from('events');
        $this -> db -> where('user_id',$session_data['id']);


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

        $result = $query->result();

        if($result)
        {

            $events_array = array();
            foreach($result as $row)
            {
                $events_array = array(
                    'id' => $row->id,
                    'title' => $row->title,
                    'ev_img_name' => $row->ev_img_name,

                );

                $this->session->set_userdata('events',$events_array);
            }
            $session_data = $this->session->userdata('events');
            $id = $this->session->userdata('id');
            $data['id'] = $id;
            $data['id'] = $session_data['id'];
            $title = $this->session->userdata('title');
            $data['title'] = $title;
            $data['title'] = $session_data['title'];
            $ev_img_name = $this->session->userdata('ev_img_name');
            $data['ev_img_name'] = $ev_img_name;
            $data['ev_img_name'] = $session_data['ev_img_name'];

它只获取表的第一行,但我需要获取具有相同 user_id 的所有行。我怎样才能做到这一点。提前致谢。

【问题讨论】:

  • 方法 set_userdata 在循环内,导致它每次迭代都会覆盖您的数据
  • 谢谢,但我怎样才能返回所有结果?
  • 为什么不直接选择特定列,获取结果集然后在会话中分配它,不需要循环
  • 我是编码新手。我会尝试解释我需要什么`我有一个表“事件”,用户可以在其中添加无限的事件。现在我想在他们的页面中显示他们所有活动的信息。
  • 为什么要在会话中保存所有这些数据?这是很多内存。

标签: php mysql arrays codeigniter rows


【解决方案1】:

在 foreach 中,您将值重新分配给同一个数组。 尝试使用

 $events_array = array();
 foreach($result as $row)
 {
      $events_array[] = array(
          'id' => $row->id,
          'title' => $row->title,
          'ev_img_name' => $row->ev_img_name,
      );

}
$this->session->set_userdata('events',$events_array);

这样您将在$events_array 中获得返回结果中的所有行。

现在在你看来你可以这样做

<?php foreach($events_array as $event) { ?>
   <div class="event">
      Title: <?= $event['title'] ?>
      Image: <br>
      <img src="<?= $event['ev_img_name'] ?>">
   </div>
<?php } ?>

【讨论】:

  • 那么我将如何将每个结果放入变量中?
  • 结果在一个数组中。你可以用一个简单的 foreach 来循环它。您能否描述一下您正在尝试做的事情。也许有更好的方法。
  • 非常感谢。我是编码新手。我会尝试解释我需要什么`我有一个表“事件”,用户可以在其中添加无限的事件。现在我想在他们的页面中显示他们所有活动的信息。
  • 虽然你根本不需要使用循环,但你可以这样做 $this->db->select('id','title', 'ev_img_name').... 和然后 $events_array = $query->result_array();然后将其传递给视图。
【解决方案2】:

试试这个代码, 你可以直接从codeigniter sql查询中以数组格式获取任何你想要的数据(字段数),然后将该数组直接设置为会话,如下所示,

 $this->db->select('id,title,ev_img_name');
 $this->db->from('events');
 $this->db->where('user_id',$session_data['id']);

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

 if(count($result)>0){
      $this->session->set_userdata('events',$result);
 }

【讨论】:

  • 问题不在于查询,问题在于循环。通过在每次迭代中替换它们,他正在失去那里的价值。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2022-11-21
  • 2021-03-09
  • 2021-02-15
  • 2021-12-26
  • 2017-09-12
相关资源
最近更新 更多