在CodeIgniter(简称CI)框架中,数据库查询是一个常见且重要的操作,本文将详细介绍如何在CI中进行各种数据库查询操作,包括基本查询、条件查询、去重、排序、分页、计数、插入记录、更新和删除等,通过这些内容,你将能够熟练掌握CI框架中的数据库操作。
一、基本查询
1. 选择字段和表
$this->db->select('name, grade'); $this->db->from('tableName'); $query = $this->db->get(); $result = $query->result(); // 返回object数组(多条记录) $result_array = $query->result_array(); // 返回二维数组 $row = $query->row(); // 返回一个对象(一条记录) $row_array = $query->row_array(); // 返回一维数组
2. 插入记录
$data = array( 'title' => 'My title', 'name' => 'My name' ); $this->db->insert('tableName', $data);
3. 更新记录
$data = array( 'title' => 'Updated title', 'name' => 'Updated name' ); $this->db->where('id', 5); $this->db->update('tableName', $data);
4. 删除记录
$this->db->where('id', $id); $this->db->delete('mytable');
二、条件查询
1. 简单条件查询
$this->db->where('name', 'Jack'); $query = $this->db->get('tableName'); $result = $query->result();
2. 复杂条件查询
$array = array('name !=' => $name, 'id <' => $id, 'date >' => $date); $this->db->where($array); $query = $this->db->get('tableName'); $result = $query->result();
3. 自定义SQL模式的查询
$where = "name='Joe' AND status='boss' OR status='active'"; $this->db->where($where); $query = $this->db->get('tableName'); $result = $query->result();
三、模糊匹配查询
// 模糊匹配,第三个参数可选,不选的话就是下面第三种情况,%match $this->db->like('title', 'match', 'before'); // 模糊匹配,match% $this->db->like('title', 'match', 'after'); // 模糊匹配,%match% $this->db->like('title', 'match', 'both'); // 与上对立 $this->db->not_like('title', 'match', 'both');
四、去重查询
$this->db->select('username, grade')->distinct(); $query = $this->db->get('tableName'); $result = $query->result();
五、排序查询
// title降序name升序 $this->db->order_by('title DESC, name ASC'); $query = $this->db->get('tableName'); $result = $query->result(); // 随机排序,第一个参数无实际意义,但是要写,随机嘛,谈不上根据哪个字段随机了 $this->db->order_by('name', 'RANDOM'); $query = $this->db->get('tableName'); $result = $query->result();
六、分页查询
// 未设置偏移量,那么默认偏移量为0,即从0开始选择,选出10条数据 $this->db->limit(10); $query = $this->db->get('tableName'); $result = $query->result(); // 设置了偏移量,从10开始,选出10条数据,即11-20条记录 $this->db->limit(10, 10); $query = $this->db->get('tableName'); $result = $query->result();
七、计数查询
// 查询数据表中总的记录数 $count = $this->db->count_all('tableName'); // 查询符合当前条件的记录的数目,注意用from而不是get $where = "name='Joe' AND status='boss' OR status='active'"; $this->db->where($where); $count = $this->db->from('tableName')->count_all_results();
八、跨服务器查询数据库
1. 配置多个数据库连接
首先需要在application/config/database.php
文件中配置多个数据库连接:
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'local_username', 'password' => 'local_password', 'database' => 'local_database', // ...其他配置... ); $db['remote'] = array( 'dsn' => '', 'hostname' => 'remote_server_ip', 'username' => 'remote_username', 'password' => 'remote_password', 'database' => 'remote_database', // ...其他配置... );
2. 加载和切换数据库连接
// 加载默认数据库连接 $this->load->database(); // 加载第二个数据库连接 $DB2 = $this->load->database('remote', TRUE);
3. 使用模型或查询构建器实现跨服务器查询
class My_model extends CI_Model { private $DB2; public function __construct() { parent::__construct(); // 加载默认数据库连接 $this->load->database(); // 加载第二个数据库连接 $this->DB2 = $this->load->database('remote', 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(); } }
九、常见问题解答(FAQs)
Q1: 如何在CI中实现跨服务器查询?
A1: 要在CI中实现跨服务器查询,可以按照以下步骤进行操作:在application/config/database.php
文件中配置多个数据库连接,在需要的地方选择和切换数据库连接,具体步骤如下:
1、配置多个数据库连接:在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 );
2、加载和切换数据库连接:在CI中,你可以通过以下方式加载和切换数据库连接:
// 加载默认数据库连接 $this->load->database(); // 加载第二个数据库连接 $DB2 = $this->load->database('another_db', TRUE);
以上就是关于“ci查询数据库”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1491865.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复