• CI生成查询记录集result(),row(),row_array().....


    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 将不再可用

  • 相关阅读:
    性能测试系列(1)-性能测试基本概念
    性能篇综合汇总
    【CTFHUB】Web技能树
    Flash XSS
    绕过CDN找到⽬标站点真实IP
    【网鼎杯2020白虎组】Web WriteUp [picdown]
    【网鼎杯2020朱雀组】Web WriteUp
    【网鼎杯2020青龙组】Web WriteUp
    利用DNSLog实现无回显注入
    Cobalt Stike使用教程
  • 原文地址:https://www.cnblogs.com/lpshan/p/4527569.html
Copyright © 2020-2023  润新知