PHP CI框架 result()详解
该方法执行成功返回一个对象数组,失败则返回一个空数组。 一般情况下,我们使用下面的方法遍历结果,代码就像这样:
$query = $this->db->query("要执行的 SQL"); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; }
本函数的别名是 result_object()。
如果当前所执行的 SQL 可能不会返回记录集,我们可以使用如下方法进行判断:
$query = $this->db->query("要执行的 SQL"); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } }
你可以传递一个字符串给result()函数,该字符串代表着某个类为每一个result对象进行实例化 (注意:该类必须已经被加载)。
$query = $this->db->query("SELECT * FROM users;"); foreach ($query->result('User') as $row) { echo $row->name; // call attributes echo $row->reverse_name(); // or methods defined on the 'User' class }
result_array()
该方法执行成功时将记录集作为关联数组返回。失败时返回空数组。一般情况下,我们使用下面的方法遍历结果,代码就像这样:
$query = $this->db->query("要执行的 SQL"); foreach ($query->result_array() as $row) { echo $row['title']; echo $row['name']; echo $row['body']; }
row()
该函数将当前请求的第一行数据作为 object 返回。这里是示例代码:
$query = $this->db->query("要执行的 SQL"); if ($query->num_rows() > 0) { $row = $query->row(); echo $row->title; echo $row->name; echo $row->body; }
你可以传递参数(参数是行的索引)以便获得某一行的数据。比如我们要获得第 5 行的数据: $row = $query->row(4); 如果传入的参数超出行索引,则返回第一行(索引为0)数据 你也可以添加一个字符串参数,它是一个类在row()函数下实例化的名字: $query = $this->db->query("SELECT * FROM users LIMIT 1;"); $query->row(0, 'User') echo $row->name; // call attributes echo $row->reverse_name(); // or methods defined on the 'User' class
row_array()
功能与 row() 一样, 区别在于该函数返回的是一个数组:
$query = $this->db->query("要执行的 SQL"); if ($query->num_rows() > 0) { $row = $query->row_array(); echo $row['title']; echo $row['name']; echo $row['body']; } 你可以传递参数(参数是行的索引)以便获得某一行的数据。比如我们要获得第 5 行的数据: $row = $query->row_array(4); 如果传入的参数超出行索引,则返回第一行(索引为0)数据 除此以外, 我们还可以使用下面的方法通过游标的方式获取记录: $row = $query->first_row() $row = $query->last_row() $row = $query->next_row() $row = $query->previous_row() 默认情况下他们将返回一个 object,同时你也可以传递参数 "array" 以便使用 array 的方式获取数据 $row = $query->first_row('array') $row = $query->last_row('array') $row = $query->next_row('array') $row = $query->previous_row('array')
结果集辅助函数
$query->num_rows()
该函数将会返回当前请求的行数。在本例子中, $query 表示当前 SQL 所产生的请求结果对象:
$query = $this->db->query('SELECT * FROM my_table'); echo $query->num_rows();
$query->num_fields()
该函数返回当前请求的字段数(列数):
$query = $this->db->query('SELECT * FROM my_table'); echo $query->num_fields();
$query->free_result()
该函数将会释放当前查询所占用的内存并删除其关联的资源标识。通常来说,PHP 将会脚本执行结束后自动释放内存。如果当前执行的请求将要花很长时间并且占用比较大的资源时,该函数可以在一定程度上降低资源的消耗:
$query = $this->db->query('SELECT title FROM my_table'); foreach ($query->result() as $row) { echo $row->title; } $query->free_result(); // $query 将不再可用 $query2 = $this->db->query('SELECT name FROM some_table'); $row = $query2->row(); echo $row->name; $query2->free_result(); // $query2 将不再可用