CI框架数据库查询
一、配置多个数据库连接
在CI框架中,所有数据库配置都在application/config/database.php
文件中完成,要实现跨服务器查询,首先需要在该文件中配置多个数据库连接。
$active_group = 'default'; $query_builder = TRUE; // 默认的数据库连接 $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'database1', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE ); // 第二个数据库连接 $db['another_db'] = array( 'dsn' => '', 'hostname' => 'remote_host', 'username' => 'remote_user', 'password' => 'remote_password', 'database' => 'database2', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
二、通过模型或查询构建器实现跨服务器查询
1. 在模型中使用多个数据库连接
在CI中,模型是与数据库交互的主要方式,要在模型中使用多个数据库连接,可以通过在模型的构造函数中加载不同的数据库连接。
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(); } }
在上述代码中,$this->DB2用于操作第二个数据库连接。
2. 使用查询构建器进行跨服务器查询
查询构建器可以简化SQL查询的编写,并且可以在不同的数据库连接之间进行切换。
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 join_tables_across_databases() { // 从默认数据库获取数据 $this->db->select('table1.id, table1.name, table2.info'); $this->db->from('table1'); // 切换到第二个数据库连接 $this->db->join('another_db.table2', 'table1.id = table2.id'); $query = $this->db->get(); return $query->result(); } }
三、查询结果集
CI框架提供了多种方法来获取查询结果:
->result()
: 返回一个对象数组(多条记录)。
->result_array()
: 返回一个二维数组。
->row()
: 返回一个对象(单条记录)。
->row_array()
: 返回一个一维数组。
->insert_id()
: 获取上一条插入的数据记录的ID值。
四、条件查询
CI框架支持多种条件查询方法:
->where('name','Jack')
: 条件是姓名为Jack。
->where_in('id',[1,2,3,4,5])
: ID是一个数组。
->where_not_in('id',[1,2,3,4,5])
: 与上对立。
->like('title', 'match', 'before')
: 模糊匹配,第三个参数可选。
->or_like('title', 'match', 'after')
: 同上。
->like($array)
: 模糊匹配关联数组。
五、去重和排序
->distinct()
: 根据用户名和成绩去重。
->order_by('title DESC, name ASC')
: title降序,name升序。
->order_by('name','RANDOM')
: 随机排序。
六、分页和计数
->limit(10)
: 未设置偏移量,从0开始选择10条数据。
->limit(10,10)
: 从10开始,选出10条数据。
->count_all('tableName')
: 查询数据表中总的记录数。
->where($where)->count_all_results()
: 查询符合当前条件的记录数目。
七、插入、更新和删除记录
->insert('tableName',$data)
: 往表中插入一条数据。
->update('tableName',$data)
: 更新主键(id)为5的记录的相关数据。
->delete('mytable')
: 删除指定表中的数据。
八、统计某一列的值
$tj_list = $this->game_user_log->instance_total()->select_sum('total');
: 统计某一列的值。
相关问题与解答
Q1: 如何在CI框架中配置多个数据库连接?
A1: 在application/config/database.php
文件中,通过定义多个数据库连接组来实现,每个连接组包含数据库的主机名、用户名、密码等信息,可以定义一个默认的数据库连接和一个远程的数据库连接,然后在需要的地方选择和切换这些连接,详细配置如上文所示。
Q2: CI框架中如何实现跨服务器查询?
A2: 在CI框架中,跨服务器查询可以通过在模型中使用多个数据库连接来实现,具体步骤包括在模型的构造函数中加载不同的数据库连接,然后使用这些连接进行查询操作,还可以使用查询构建器简化SQL查询的编写,并在不同的数据库连接之间进行切换,可以在默认数据库中获取数据,然后将其与远程数据库中的数据进行联接查询。
到此,以上就是小编对于“ci框架数据库查询”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/44355.html<