CI框架数据库操作知识点总结

数据库配置

CodeIgniter 有一个配置文件让你存放数据库连接值,配置文件位于以下路径:

application/config/database.php

配件文件存放在一个如下格式的一个多维数组里:

$db['default']['hostname']= "localhost";

$db['default']['username']= "root";

$db['default']['password']= "";

$db['default']['database']= "database_name";

$db['default']['dbdriver']= "mysql";

$db['default']['dbprefix']= "";

$db['default']['pconnect']= TRUE;

$db['default']['db_debug']= FALSE;

$db['default']['cache_on']= FALSE;

$db['default']['cachedir']= "";

$db['default']['char_set']= "utf8";

$db['default']['dbcollat']= "utf8_general_ci";

我们使用多维数组的原因是为了让你随意的存储多个连接值的设置。

例如我们又定义了一个test数据库:

$db['test']['hostname']= "localhost";

$db['test']['username']= "root";

$db['test']['password']= "";

$db['test']['database']= "database_name";

$db['test']['dbdriver']= "mysql";

$db['test']['dbprefix']= "";

$db['test']['pconnect']= TRUE;

$db['test']['db_debug']= FALSE;

$db['test']['cache_on']= FALSE;

$db['test']['cachedir']= "";

$db['test']['char_set']= "utf8";

$db['test']['dbcollat']= "utf8_general_ci";

那么,告诉系统使用"test"组,你可以设置位于该配置文件中的变量: 

$active_group = "test";

注意: "test"的名字是任意的,这可以让你自由设置,我们的主要连接默认使用"default"这个名字,当然,您可以基于您的项目为它起一个更有意义的名字。

连接你的数据库有两种方法:

自动连接

“自动连接” 功能将在每个一页面加载时被自动实例化数据库类。要启用“自动连接”,可在如下文件中的 library 数组里添加 database:

application/config/autoload.php 即:$autoload['libraries'] = array('database');

手动连接

如果仅仅是一部分页面要求数据库连接,你可以在你有需要的函数里手工添加如下代码或者在你的类里手工添加以供该类使用。

$this->load->database();

然后在控制器或模型中使用如下语法操作:

$this->db->XXX方法;

注:数据库连接也可以在模型中进行一些定义,如:$this->load->model('Model_name', '', TRUE);这里第三个参数为TRUE就是自动连接数据库了,此时,即使你在模型中没有连接数据库,程序也会正常工作。这里多说两句,第三个参数也可以是你配置的数据库数组的名字,这样做是手动连接指定的数据库,这个方法的第二个参数是在使用模型前,为该模型起一个别名。

连接多数据库

如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:

$DB1 = $this->load->database('group_one',TRUE);

$DB2 = $this->load->database('group_two',TRUE); 

注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。通过设置函数的第二个参数为TRUE(boolean)来返回一个数据库对象。当你使用这种方法,你将用对象名来执行操作命令而不是用户向导模式,也就是说,你将用以下方式执行数据库操作:

$DB1-> XXX方法;

$DB2-> XXX方法;

而不是:

$this->db->XXX方法;

-----------------------------------------------------------

-------------------CI框架增删改查的方法--------------------

例子中$DB_default是自定义的变量,例子中使用的默认数据库连接名

插入一条数据:

$DB_default =$this->load->database('default', TRUE);

$data[‘’]=XXX;

$data[‘’]=XXX;

$DB_default->insert('XXX表',$data);

删除一条数据:

$DB_default =$this->load->database('default', TRUE);

$DB_default->where('XXX字段',XXX);

$DB_default->delete('XXX表');

修改一条数据:

$DB_default =$this->load->database('default', TRUE);

$data[‘’]=XXX;

$data[‘’]=XXX;

$DB_default->where('XXX字段',XXX);

$DB_default->update('XXX表',$data);

查询一条数据:

$DB_default =$this->load->database('default', TRUE); $DB_default->select(‘xxx字段’);//不填为查询所有

$DB_default->where('XXX字段', 'XXX');

$DB_default->limit(XXX数字);

$DB_default->order_by('XXX字段','asc或desc');

$DB_default->group_by('XXX字段');

$DB_default->from('XXX表');

$query=$DB_default->get();

----------------------------------------------------------

上面是采用了CI框架封装好的方法,我们也可以采用原生态的sql语句配合框架来进行增删改查

例如:查询user表的所有数据

$DB_default =$this->load->database('default', TRUE);

$query=$DB_default->query('SELECT* FROM user');

注意,这时的$query是无法直接输出的,要这样才能输出:

$arr =array();

              if($query->num_rows() > 0){

foreach ($query->result_array() as $row) {

                        array_push($arr, $row);

}

              }

return $arr;

        上面这段代码核心的部分就是result_array()这个方法,我们知道,sql直接查询出来的结果集并不是数组类型的,CI框架查询出来的结果集也不是数组类型的,所以必须把他们转化为数组类型才能方便应用,result_array()就是CI框架的转化方法,这里把每条数据依次压到了一个自己定义的数组中,之所以这么做是因为result_array()这个方法的返回值在某些特殊情况下不是结果集。

还有一些其它类似的方法,这里只提供方法的功能,具体用法参见CI中国官方网站(http://codeigniter.org.cn/):

result()本函数的别名是 result_object(),该函数执行成功返回一个对象数组,失败则返回一个空数组

row()该函数将当前请求的第一行数据作为 object 返回。

row_array()功能与 row() 一样, 区别在于该函数返回的是一个数组

num_rows()该函数将会返回当前请求的行数。

num_fields()该函数返回当前请求的字段数(列数)

free_result()该函数将会释放当前查询所占用的内存并删除其关联的资源标识。


----------------------------------------------------------


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CodeIgniter框架中实现数据库部分数据加密方法,可以使用框架自带的加密类 `Encryption`。 以下是一个简单的实现示例: ```php class MY_Model extends CI_Model { protected $table_name = ''; protected $primary_key = ''; protected $encrypt_fields = array(); public function __construct() { parent::__construct(); $this->load->library('encryption'); } public function get($id) { $this->db->where($this->primary_key, $id); $query = $this->db->get($this->table_name); $row = $query->row_array(); foreach ($this->encrypt_fields as $field) { $row[$field] = $this->encryption->decrypt($row[$field]); } return $row; } public function insert($data) { foreach ($this->encrypt_fields as $field) { $data[$field] = $this->encryption->encrypt($data[$field]); } return $this->db->insert($this->table_name, $data); } public function update($id, $data) { foreach ($this->encrypt_fields as $field) { $data[$field] = $this->encryption->encrypt($data[$field]); } $this->db->where($this->primary_key, $id); return $this->db->update($this->table_name, $data); } } ``` 在这个示例中,我们创建了一个 `MY_Model` 类,它继承自 CodeIgniter 框架的 `CI_Model` 类。在构造函数中,我们加载了框架自带的加密类 `Encryption`。 我们定义了三个属性,分别为数据库表名 `$table_name`、主键名 `$primary_key`,以及需要加密的字段名数组 `$encrypt_fields`。 我们提供了三个方法,分别为 `get`、`insert`、`update`,用于获取、插入、更新数据。在 `get` 方法中,我们查询数据库并获取一行数据,然后遍历 `$encrypt_fields` 数组,对每个需要加密的字段调用 `encryption` 类的 `decrypt` 方法进行解密。在 `insert` 和 `update` 方法中,我们同样遍历 `$encrypt_fields` 数组,对每个需要加密的字段调用 `encryption` 类的 `encrypt` 方法进行加密。最后,我们调用框架自带的数据库操作方法 `insert` 和 `update` 进行插入和更新操作。 这样,我们就可以在 CodeIgniter 框架中方便地实现数据库部分数据加密了。当然,这只是一个简单的示例,实际应用中还需要考虑很多其他因素,例如密钥的管理、加密算法的选择等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值