如何在不使用codeigniter中的result()或row()的情况下获得查询结果



我在名为get_all_Emp()的模型返回中有一个函数,

return $this->db->get();

我在控制器中称之为

$items    = $this->Item->get_all_Emp();

但它没有返回结果,而是返回CI_DB_mysqli_result Object,即

CI_DB_mysqli_result Object
(
[conn_id] => mysqli Object
(
[affected_rows] => 24
[client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
[client_version] => 50011
[connect_errno] => 0
[connect_error] => 
[errno] => 0
[error] => 
[error_list] => Array
(
)
[field_count] => 44
[host_info] => Localhost via UNIX socket
[info] => 
[insert_id] => 0
[server_info] => 5.7.22-0ubuntu0.16.04.1
[server_version] => 50722
[stat] => Uptime: 540  Threads: 1  Questions: 1117  Slow queries: 0  Opens: 385  Flush tables: 1  Open tables: 171  Queries per second avg: 2.068
[sqlstate] => 00000
[protocol_version] => 10
[thread_id] => 36
[warning_count] => 0
)
[result_id] => mysqli_result Object
(
[current_field] => 0
[field_count] => 44
[lengths] => 
[num_rows] => 24
[type] => 0
)
[result_array] => Array
(
)
[result_object] => Array
(
)
[custom_result_object] => Array
(
)
[current_row] => 0
[num_rows] => 24
[row_data] => 
)

但如果我使用

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

而不是CCD_ 3,我得到了合适的结果。那么,有没有什么方法可以用以前的方法来做,并且仍然得到答案感谢您的建议

您似乎混淆了数组和对象。通过简单的谷歌搜索有很多关于这方面的信息,但本质上可以归结为:

如果你有一个名为name的列,它有一个数组,你可以做类似$row['name']的事情,而有一个对象,你做$row->name,那么符号就有点不同了,它更像是一个风格问题。我更喜欢使用对象,但如果必须进行操作,数组可能会更有用。

此外,get()实际上并没有返回结果对象。

  1. $this->db->get()->result()为params中的所有行返回一个对象
  2. $this->db->get()->row()返回单行的对象
  3. $this->db->get()->result_array()为params中的所有行返回一个数组
  4. $this->db->get()->row_array()返回单行的数组

因此,在您的函数中,如果您想使用数组,请执行return $this->db-get()->result_array();,假设您已经设置了from条件。

对于数组结果,可以使用result_array((。只需在您的模型中返回此:

return $this->db->get("table_name")->result_array();

在你得到这样的之后

Array(
[0] => Array('col1' => 'somedata', 'col2' => 'somedata2'),
[1] => Array('col1' => 'somedata', 'col2' => 'somedata2'),
)

此处的文档

相关内容

最新更新