CodeIgniter 数据库操作详解
在CodeIgniter框架中,数据库操作是一个常见且重要的任务,本文将详细介绍如何在CodeIgniter中进行数据库配置、连接以及执行各种常见的数据库操作。
一、数据库配置
在开始使用数据库之前,首先需要在application/config/database.php
文件中进行数据库配置,以下是典型的数据库配置示例:
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'your_database_name', '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. 自动加载
可以在application/config/autoload.php
中配置自动加载数据库库:
$autoload['libraries'] = array('database');
2. 手动加载
如果选择手动加载数据库类,可以在控制器或模型的构造函数中使用以下代码:
class YourController extends CI_Controller { public function __construct() { parent::__construct(); $this->load->database(); } }
三、基本数据库操作
1. 查询数据
// 获取所有数据 $query = $this->db->get('mytable'); foreach ($query->result() as $row) { echo $row->title; } // 获取特定列的数据 $this->db->select('title, content'); $query = $this->db->get('mytable'); foreach ($query->result() as $row) { echo $row->title; } // 带条件的查询 $this->db->where('id', 3); $query = $this->db->get('mytable'); foreach ($query->result() as $row) { echo $row->title; }
2. 插入数据
$data = array( 'title' => 'My title', 'content' => 'My content' ); $this->db->insert('mytable', $data);
3. 更新数据
$this->db->where('id', 3); $data = array( 'title' => 'Updated title' ); $this->db->update('mytable', $data);
4. 删除数据
$this->db->where('id', 3); $this->db->delete('mytable');
5. 排序和限制数据
$this->db->order_by('title', 'desc'); $this->db->limit(5); $query = $this->db->get('mytable'); foreach ($query->result() as $row) { echo $row->title; }
四、事务处理
在某些情况下,需要确保多个数据库操作要么全部成功,要么全部失败,这时可以使用事务:
$this->db->trans_start(); $this->db->query('AN SQL QUERY...'); $this->db->query('ANOTHER QUERY...'); $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { echo "Transaction Failed!"; } else { echo "Transaction Successful!"; }
五、使用Active Record类进行复杂查询
CodeIgniter提供了Active Record类来简化复杂的SQL查询:
$this->db->select('*'); $this->db->from('sites'); $this->db->join('people', 'sites.peopleid = people.id'); $query = $this->db->get(); foreach ($query->result() as $row) { echo $row->url; }
六、常见问题解答(FAQs)
Q1: 如何在CodeIgniter中配置多个环境(开发、测试、生产)的数据库?
A1: 可以通过在application/config/database.php
文件中定义多个数据库连接组来实现。
$db['development'] = array( ... ); // 开发环境配置 $db['testing'] = array( ... ); // 测试环境配置 $db['production'] = array( ... ); // 生产环境配置
然后在控制器或模型中通过$active_group
变量切换不同的环境:
$active_group = 'development'; // or 'testing' or 'production'
Q2: 如何在CodeIgniter中使用环境变量存储数据库连接信息?
A2: 可以通过在CI系统设置界面或配置文件中添加环境变量,然后在database.php
中引用这些环境变量,在Jenkins中可以这样配置:
export DB_HOST="localhost"
export DB_PORT="5432"
export DB_USER="db_user"
export DB_PASS="db_pass"
export DB_NAME="my_database"
``在
database.php`中引用:
$db[‘default’] = array(
‘dsn’ => ”,
‘hostname’ => getenv(‘DB_HOST’),
‘username’ => getenv(‘DB_USER’),
‘password’ => getenv(‘DB_PASS’),
‘database’ => getenv(‘DB_NAME’),
…
);
小伙伴们,上文介绍了“ci 数据库”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1491118.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复