如何进行 CI 数据库查询?

CI数据库查询

如何进行 CI 数据库查询?

CodeIgniter (CI) 是一个功能强大的PHP框架,其内置的数据库类提供了丰富的方法和函数来进行数据库操作,本文将详细介绍CI中的常见数据库查询操作,包括查询结果集、条件查询、去重、排序、分页、计数、插入记录、更新和删除等。

一、查询结果集

在CI中,可以使用多种方法获取查询结果集,每种方法返回的结果格式有所不同。

1、result():返回一个对象数组,每个对象代表一条记录,适用于处理多条记录。

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

2、result_array():返回一个二维数组,每行代表一条记录,适用于处理多条记录。

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

3、row():返回一个对象,表示单条记录,如果查询结果为空,则返回NULL。

   $query = $this->db->get('tableName');
   $row = $query->row();

4、row_array():返回一个关联数组,表示单条记录,如果查询结果为空,则返回NULL。

   $query = $this->db->get('tableName');
   $row = $query->row_array();

5、insert_id():获取上一条插入的数据记录的ID值,通常用于自增字段。

   $this->db->insert('tableName', $data);
   $insert_id = $this->db->insert_id();

二、条件查询

CI中的条件查询可以通过多种方式实现,包括简单的条件、复杂的条件组合以及模糊匹配。

1、简单条件:使用where()方法。

   $this->db->where('name', 'Jack')->get('tableName');

2、IN和NOT IN条件:使用where_in()where_not_in()方法。

   $ids = [1, 2, 3, 4, 5];
   $this->db->where_in('id', $ids)->get('tableName');

3、复杂条件:通过关联数组传递多个条件。

如何进行 CI 数据库查询?

   $array = array('name !=' => 'John', 'id <' => 20, 'date >' => '2024-01-01');
   $this->db->where($array)->get('tableName');

4、自定义SQL模式:使用where()方法并传递自定义的SQL字符串。

   $where = "name='Joe' AND status='boss' OR status='active'";
   $this->db->where($where)->get('tableName');

5、模糊匹配:使用like()方法,支持前缀、后缀和双向匹配。

   $this->db->like('title', 'match', 'before'); // %match
   $this->db->like('title', 'match', 'after');  // match%
   $this->db->like('title', 'match', 'both');   // %match%

6、模糊匹配关联数组:使用like()方法并传递关联数组。

   $array = array('title' => $match, 'page1' => $match, 'page2' => $match);
   $this->db->like($array)->get('tableName');

三、DISTINCT去重

使用distinct()方法可以去除重复的记录。

$this->db->select('username, grade')->distinct()->get('tableName');

四、排序

使用order_by()方法对查询结果进行排序。

$this->db->order_by('title DESC, name ASC')->get('tableName');

五、分页

使用limit()方法实现分页功能。

// 未设置偏移量,默认从第0条开始选择10条数据
$this->db->limit(10)->get('tableName');
// 设置偏移量,从第10条开始选择10条数据
$this->db->limit(10, 10)->get('tableName');

六、计数

使用count_all()count_all_results()方法统计记录数。

// 查询表中总的记录数
$this->db->count_all('tableName');
// 查询符合当前条件的记录数
$this->db->where($array)->from('tableName')->count_all_results();

七、插入记录

使用insert()方法插入单条或多条记录。

$data = array('title' => 'My title', 'name' => 'My name');
$this->db->insert('tableName', $data);
$data = array(
    array('title' => 'My title1', 'name' => 'My name1'),
    array('title' => 'My title2', 'name' => 'My name2')
);
$this->db->insert_batch('tableName', $data);

八、更新记录

使用update()方法更新记录。

$data = array('title' => 'My new title', 'name' => 'My new name');
$this->db->where('id', 5)->update('tableName', $data);

九、删除记录

使用delete()方法删除记录。

$this->db->where('id', $id);
$this->db->delete('mytable');

十、统计某一列的值

使用聚合函数统计某一列的值。

如何进行 CI 数据库查询?

$tj_list = $this->game_user_log->instance_total()->select_sum('total');

以下是两个关于CI数据库查询的常见问题及其解答:

Q1: 如何在CodeIgniter中使用JOIN进行多表查询?

A1: CodeIgniter提供了方便的方法来进行多表查询,主要使用join(),join(),left_join()等方法。

$this->db->select('*');
$this->db->from('table1');
$this->db->join('table2', 'table1.id = table2.foreign_key');
$query = $this->db->get();
return $query->result();

在这个例子中,我们选择了table1中的所有列,并通过table1.id = table2.foreign_key条件将其与table2连接起来,可以根据需要选择内连接(INNER JOIN)、左连接(LEFT JOIN)等不同类型的连接方式。

Q2: 如何在CodeIgniter中防止SQL注入攻击?

A2: CodeIgniter的查询构建器类自动地对查询语句进行了过滤和转义,以防止SQL注入攻击,当使用查询构建器创建查询时,不需要额外担心SQL注入问题。

$name = $this->input->post('name');
$this->db->where('name', $name);
$query = $this->db->get('users');
return $query->result();

在这个例子中,用户输入的名称被安全地用于查询条件,无需手动转义特殊字符,当直接使用SQL字符串时,应特别注意避免拼接用户输入的内容,而是使用绑定参数的方式。

以上内容就是解答有关“ci 数据库查询”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1491893.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2025-01-15 17:49
下一篇 2025-01-15 17:52

相关推荐

  • 如何进行CI数据库的增删改查操作?

    CI数据库的增删改查一、CI数据库简介CI数据库,全称CodeIgniter数据库类,是PHP的一个轻量级框架,提供了一组丰富的数据库操作方法,本文将详细介绍如何在CI数据库中进行增删改查操作,二、CI数据库的配置在使用CI数据库之前,首先需要进行数据库配置,在application/config/databa……

    2025-01-15
    06
  • 如何进行DBS恢复数据库操作?

    dbs恢复数据库通常涉及使用备份和日志文件重建数据,确保数据的一致性和完整性。

    2025-01-15
    06
  • 如何进行CI更新数据库的操作?

    CI更新数据库在软件开发和运维过程中,持续集成(Continuous Integration, CI)是确保代码质量和快速迭代的重要实践,CI系统通过自动化构建、测试和部署流程,帮助开发团队及时发现并解决问题,提高软件交付的效率和质量,而数据库作为软件系统的核心组件之一,其版本控制和更新策略同样至关重要,本文将……

    2025-01-15
    06
  • 如何实现 C 语言中循环读取数据库的操作?

    循环读取数据库中的数据,直到满足特定条件或达到预设次数。

    2025-01-15
    06

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入