CI查询数据库
在CodeIgniter(简称CI)框架中,数据库查询是一个常见且重要的操作,本文将详细介绍如何使用CI进行各种类型的数据库查询,包括基本查询、条件查询、去重、排序、分页、计数、插入记录、更新和删除等操作,通过丰富的示例代码和表格展示,帮助读者更好地理解和应用这些技术。
一、基本查询
在CI中,基本的查询操作可以通过$this->db->get()
方法来实现,以下是一个简单的示例:
// 一般查询 $this->db->select('name, grade')->where('sex', '男')->limit(10, 10)->get('tableName')->result();
结果集类型
方法 | 返回值类型 |
result() | object数组(多条记录) |
result_array() | 二维数组 |
row() | 一个对象(一条记录) |
row_array() | 一维数组 |
二、条件查询
1. 简单条件查询
// 查询姓名为Jack的记录 $this->db->where('name', 'Jack')->get('tableName')->result();
2. 复杂条件查询
$ids = [1, 2, 3, 4, 5]; $this->db->where_in('id', $ids)->get('tableName')->result();
3. 自定义SQL模式查询
$where = "name='Joe' AND status='boss' OR status='active'"; $this->db->where($where)->get('tableName')->result();
三、去重查询
// 根据用户名和成绩去重 $this->db->select('username, grade')->distinct()->get('tableName')->result();
四、排序查询
// 按title降序和name升序排序 $this->db->order_by('title DESC, name ASC')->get('tableName')->result();
五、分页查询
// 未设置偏移量,默认从第0条开始选择10条数据 $this->db->limit(10)->get('tableName')->result(); // 设置偏移量,从第10条开始选择10条数据 $this->db->limit(10, 10)->get('tableName')->result();
六、计数查询
// 查询数据表中总的记录数 $this->db->count_all('tableName'); // 查询符合当前条件的记录数 $this->db->where($where)->from('tableName')->count_all_results();
七、插入记录
$data = array( 'title' => 'My title', 'name' => 'My name', ); $this->db->insert('tableName', $data);
八、更新记录
$data = array( 'title' => 'My new title', 'name' => 'My new name', ); $this->db->where('id', 5)->update('tableName', $data);
九、删除记录
$this->db->where('id', $id); $this->db->delete('mytable');
十、跨服务器查询
配置多个数据库连接
在application/config/database.php
文件中配置多个数据库连接:
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'database1', // 其他配置... ); $db['another_db'] = array( 'dsn' => '', 'hostname' => 'remote_host', 'username' => 'remote_user', 'password' => 'remote_password', 'database' => 'database2', // 其他配置... );
加载和切换数据库连接
// 加载默认数据库连接 $this->load->database(); // 加载第二个数据库连接 $DB2 = $this->load->database('another_db', TRUE);
十一、使用模型进行跨服务器查询
class My_model extends CI_Model { private $DB2; public function __construct() { parent::__construct(); $this->load->database(); $this->DB2 = $this->load->database('another_db', TRUE); } public function get_data_from_default_db() { $query = $this->db->get('table1'); return $query->result(); } public function get_data_from_another_db() { $query = $this->DB2->get('table2'); return $query->result(); } }
十二、统计某一列的值
$tj_list = $this->game_user_log->instance_total()->select_sum('total');
十三、常见问题解答(FAQs)
Q1: 如何在CI中实现联合查询?
A1: 在CI中,可以使用join()
方法来实现联合查询。
$this->db->select('*'); $this->db->from('table1'); $this->db->join('table2', 'table1.id = table2.foreign_id'); $query = $this->db->get(); return $query->result();
Q2: 如何在CI中实现事务管理?
A2: 在CI中,可以使用trans_begin()
、trans_complete()
和trans_rollback()
方法来实现事务管理。
$this->db->trans_begin(); $this->db->query("INSERT INTO table1 (id, name) VALUES (1, 'John')"); $this->db->query("UPDATE table2 SET name = 'Jane' WHERE id = 2"); if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback(); } else { $this->db->trans_complete(); }
通过以上详细的介绍和示例代码,相信读者已经对CI框架中的数据库查询有了全面的了解,在实际开发中,可以根据具体需求选择合适的查询方式,提高开发效率和代码质量。
以上内容就是解答有关“ci 查询数据库”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1493118.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复