0

我是codeigniter的新手。我写了这个函数,但我只能得到数组中的最后一行。我如何获得所有的卷,以便我可以将它们传递给我的视图。
这是我的方法:

public function resources(){

 $this->load->library('session');

   $query = $this->db->query("SELECT * FROM recurso;");

   foreach ($query->result_array() as $row){

      $data= $row['example'];
    }
    $this->session->set_userdata($data);
    $this->load->view('recursos');
}
4

3 回答 3

0

要将所有所有行都放到您的视图中,请尝试此操作

在你的控制器中……</p>

$this->load->library('session');
$query = $this->db->query("SELECT * FROM recurso;");
$this->load->view('recursos');

在你看来……</p>

<ul>
  <?php foreach ($query->result_array() as $row): ?>
      <li><?php $row->example ?></li>
  <?php endforeach; ?>
</ul>

笔记

用于访问$row项目的语法已更改。旧版本的 codeigniter 返回数组。我发现在 2.1.3 中,它返回一个对象并且必须这样访问

于 2013-07-05T23:44:24.437 回答
0

好吧,每次您对查询进行循环时,您都会用循环的当前值result_array()替换值,因此最后将包含最后一行的信息。您可以通过使用数组来解决此问题。但只要您不想将等添加为会话的键,您就可以将数组分配给特定键,然后轻松获取它 ( )。$data$row['example']$data0, 1, 2$this->session->userdata(‘name’)

public function resources() {
    $this->load->library('session');
    $query = $this->db->query("SELECT * FROM recurso;");

    foreach ($query->result_array() as $row) {
        $infoFromDatabaseArray[] = $row['example'];
    }

    $this->session->set_userdata(array('name' => $infoFromDatabaseArray));

    $data['arrayFromSession`] = $this->session->userdata(‘name’);
    $this->load->view('recursos', $data);
}

然后在.PHP“recursos”视图文件中,您可以使用:

<?php
echo '<pre>' . print_r($arrayFromSession) . '</pre>';
?>

请记住(来自CodeIgniter 用户指南):

Cookies 只能容纳 4KB 的数据,因此请注意不要超出容量。特别是加密过程会产生比原始数据更长的数据字符串,因此请仔细跟踪您存储的数据量。

于 2013-07-05T21:56:37.927 回答
0

来自文档:

返回数组()

该函数将查询结果作为纯数组返回,或者在没有结果时返回空数组。通常,您将在 foreach 循环中使用它,如下所示:

这意味着您需要将记录传递给外部数组或将它们显示在循环视图中。第一个选项更好。

codeigniter 手册中有很多示例。按照这个链接,你会发现更多的例子

$data = array();
$this->load->library('session');
$query = $this->db->query("SELECT * FROM recurso;");
foreach ($query->result_array() as $row)
  $data[] = $row['example'];

$this->session->set_userdata(array('userdata' => $data));
$this->load->view('recursos');

如果您在递归中只有 1 条记录,则不应使用循环。这样,您可以将循环替换为

$data = $query->row_array();

它只会返回一个结果。您可以在文档中找到更多示例。

此外,您在将数组设置为会话时犯了一个错误。

要正确执行此操作,您需要将数组传递给$this->session->set_userdata()方法。您可以在此处阅读有关 codeigniter 会话的更多信息

于 2013-07-05T23:23:02.837 回答