当前位置 : 李杰的流水账 > 技术 > linux

CodeIgniter(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()本函数的别名是 re sult_object(),该函数执行成功返回一个 对象数组 ,失败则返回一个 空数组

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

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

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

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

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

内容列表