php之CodeIgniter学习笔记

在使用数据库之前,我们最好将数据库进行自动连接:config/autoload.php自动加载 $autoload['libraries'] = array('database');
一些常用函数

选择数据
$this->db->select();
允许你在SQL查询中写 SELECT 部分。
$this->db->where();
$this->db->or_where();
$this->db->where_in();
允许你在SQL查询中写 WHERE部分,其余各种where语句请看手册。
$this->db->get();
运行选择查询语句并且返回结果集。可以获取一个表的全部数据。
$this->db->like();
$this->db->or_like();
$this->db->not_like();
本函数允许你生成 LIKE 子句,在做查询时非常有用,其余语法请看手册。
$this->db->order_by();
帮助你设置一个 ORDER BY 子句。
$this->db->group_by();
允许你编写查询语句中的 GROUP BY 部分:
$this->db->distinct();
为查询语句添加 "DISTINCT" 关键字:
$this->db->having();
允许你为你的查询语句编写 HAVING 部分。
$this->db->limit();
限制查询所返回的结果数量:
$this->db->select_max();
为你的查询编写一个 "SELECT MAX(field)"。
$this->db->select_min();
为你的查询编写一个 "SELECT MIN(field)" 。
$this->db->select_avg();
为你的查询编写一个 "SELECT AVG(field)" 。
$this->db->select_sum();
为你的查询编写一个 "SELECT SUM(field)" 。
$this->db->join();
允许你编写查询中的JOIN部分。
$this->db->count_all_results();
允许你获得某个特定的Active Record查询所返回的结果数量。可以使用Active Record限制函数,例如 where(), or_where(), like(), or_like() 等等。

插入数据

$this->db->insert();
生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 数组 或一个 对象。
$this->db->insert_batch();
一次插入多条数据,生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 数组 或一个 对象。
$this->db->set();
本函数使您能够设置inserts(插入)或updates(更新)值。它可以用来代替那种直接传递数组给插入和更新函数的方式。

更新数据

$this->db->update();
根据你提供的数据生成并执行一条update(更新)语句。你可以将一个数组或者对象传递给本函数。
$this->db->update_batch();
Generates an update string based on the data you supply, and runs the query. You can either pass an array or an object to the function. Here is an example using an array:

删除数据

$this->db->delete();
生成并执行一条DELETE(删除)语句。
$this->db->empty_table();
生成并执行一条DELETE(删除)语句。
$this->db->truncate();
生成并执行一条TRUNCATE(截断)语句。

链式方法

链式方法允许你以连接多个函数的方式简化你的语法。考虑一下这个范例:
$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
说明: 链式方法只能在PHP 5下面运行。

查询

$this->db->query();
要提交一个查询,用以下函数:
$this->db->query('YOUR QUERY HERE');
query() 函数以object(对象)的形式返回一个数据库结果集。 当使用 "read" 模式来运行查询时, 你可以使用“显示你的结果集”来显示查询结果; 当使用 "write" 模式来运行查询时, 将会仅根据执行的成功或失败来返回 TRUE 或 FALSE.

转义查询

$this->db->escape()这个函数将会确定数据类型,以便仅对字符串类型数据进行转义。并且,它也会自动把数据用单引号括起来,所以你不必手动添加单引号,用法如下:  $sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";

查询辅助函数

$this->db->insert_id()  
这个ID号是执行数据插入时的ID。 
$this->db->affected_rows()
当执行写入操作(insert,update等)的查询后,显示被影响的行数。
$this->db->count_all();
计算出指定表的总行数并返回。在第一个参数中写入被提交的表名。

生成查询记录集

result()
该方法执行成功返回一个object 数组,失败则返回一个空数组。
result_array()
该方法执行成功时将记录集作为关联数组返回。失败时返回空数组。
row()
该函数将当前请求的第一行数据作为 object 返回。

你可以传递参数(参数是行的索引)以便获得某一行的数据。比如我们要获得第 5 行的数据: $row = $query->row(4);

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

除此以外, 我们还可以使用下面的方法通过游标的方式获取记录:
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
默认情况下他们将返回一个 object,同时你也可以传递参数 "array" 以便使用 array 的方式获取数据 $row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')

结果集辅助函数

$query->num_rows()
该函数将会返回当前请求的行数。
$query->num_fields()
该函数返回当前请求的字段数(列数):
$query->free_result()
该函数将会释放当前查询所占用的内存并删除其关联的资源标识。

自动连接

“自动连接” 功能将在每个一页面加载时被自动实例化数据库类。要启用“自动连接”,可在application/config/autoload.php中的 library 数组里添加 database:
$autoload['libraries'] = array('database');

手动连接

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

连接多数据库

如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);

表数据

$this->db->list_tables();
返回一个包含当前连接数据库中所有表名称的数组。
$this->db->table_exists();
有时,在对某个表执行操作之前,使用该函数判断指定表是否存在很有用。返回一个布尔值。

数据库工具类

重要提示:  初始化数据库工具类之前,你的数据库驱动必须已经运行,因为工具类依赖于此。
加载工具类: $this->load->dbutil()
一旦初始化完毕,你可以通过 $this->dbutil 对象来访问成员函数:
$this->dbutil->list_databases()
$this->dbutil->database_exists();
$this->dbutil->xml_from_result($db_result)
$this->dbutil->backup()

数据库缓存类

激活缓存需要三步:
1、在服务器上创建一个可写的目录以便保存缓存文件。
2、在文件 application/config/database.php 中$db['xxxx']['cachedir']设置其目录。
3、激活缓存特性,可以在文件 application/config/database.php 中设置全局选项$db['xxxx']['cache_on']='TRUE',也可以用以本页下面的方法手动设置。
一旦被激活,每一次含有数据库查询的页面被加载时缓存就会自动发生。

当有数据库更新,我们需要删除缓存文件
$this->db->cache_delete()
删除缓存文件与特定网页。如果你需要清除缓存后,更新您的数据库
$this->db->cache_delete('/blog', 'comments');
注意,手册上写的是 $this->db->cache_delete('blog', 'comments');但根据实际测试应该在控制器名字前加斜杠'/'才能正确执行。
$this->db->cache_delete_all()
清除所有所有的缓存文件。

数据库维护类

注意:  欲初始化数据库维护类,请确保你的数据库驱动已经运行,因为该类依赖于数据库驱动。
使用如下方法载入数据库维护类:
$this->load->dbforge()
一旦初始化,就可以使用$this->dbforge 对象访问类中函数:
$this->dbforge->create_database('db_name')
允许你创建由第一个参数指定的数据库。
$this->dbforge->drop_database('db_name')
允许你删除由第一个参数指定的数据库。
$this->dbforge->create_table('table_name');
声明了字段和键之后,你就可以创建一个表。

(0)

相关推荐

  • CI(CodeIgniter)框架中的增删改查操作

    CodeIgniter的数据函数类在 \system\database\DB_active_rec.php 复制代码 代码如下: <span style="font-size:16px;">class ModelName extends CI_Model {     function __construct()     {         parent::__construct();     } }</span> 连接数据库:$this->load->

  • Codeigniter中集成smarty和adodb的方法

    本文实例讲述了Codeigniter中集成smarty和adodb的方法.分享给大家供大家参考,具体如下: 在CodeIgniter中要写自己的库,就需要写两个文件,一个是在application/init下面的init_myclass.php文件(如果没有init目录,自己创建).另外一个就是在application/libraries目录下创建myclass.php文件. 这里myclass是你的类名.一些规则大家看手册就好了,我这里直接就说步骤了. 1)在application/libra

  • Codeigniter(CI)框架分页函数及相关知识

    一般在数据分页的时候需要获取当前页的数据和总条数,一般人是在model中封装两个函数分别获取当前页的数据和数据总条数,业务逻辑类似,感觉有点冗余,可以封装在一起: 复制代码 代码如下: /**      * 获取分页数据及总条数      * @param string @tablename 表名      * @param mixed $where 条件      * @param int $limit 每页条数      * @param int $offset 当前页      */   

  • CodeIgniter整合Smarty的方法详解

    本文实例讲述了CodeIgniter整合Smarty的方法.分享给大家供大家参考,具体如下: CI3.0.2发布后感觉模板类还是不怎么好用,而且不能编译.Smarty功能强大,用习惯了Smarty标签,一般难以放弃,而且,是可以编译文件执行,速度快,我们可以把它们整合使用,弥补CI的模板功能的不足.我们整合使用的是CI版本3.0.3及 Smarty版本3.1.27.下面描述整合过程. 1.下载smarty-3.1.27 2 .解压smarty-3.1.27到CI项目中的application\l

  • CodeIgniter辅助函数helper详解

    1.辅助函数概述 helper辅助函数,顾名思义,就是帮助我们完成各种特定任务的一系列函数.并且每个辅助函数文件是一系列的功能集合汇总在一起.比如可以帮助我们创建链接的URL Helpers,有创建表的Form Helpers,有文本格式化输出的Text Helpers,有设置和读取cookie的Cookie Helpers,还有文件File Helpers等等. 不同于大多数其他系统的是,CodeIgniter的辅助函数没有采用类的方式实现.而是简单的,程序的功能.每个辅助函数处理一个特定的任

  • 让codeigniter与swfupload整合的最佳解决方案

    codeigniter是一款轻量,便捷的MVC框架,最近的项目涉及到批量上传,于是,就是用了swfupload这个插件,虽然网上有很多关于ci与swfupload的帖子,不过,并不是很完整,所以,这里综合各家优点,经过自己实际经验,做了下整理. 问题1:获取不到文件类型? 回答: 由于SWFUPLOAD所有类型文件的MIME均为application/octet-stream,故使用Codeigniter自带的上传类无法准确获取是否为图片,根据ci官方的wiki已经给出了解答 In your v

  • CodeIgniter启用缓存和清除缓存的方法

    Codeigniter支持缓存技术,以达到最快的速度.尽管CI已经相当高效了,但是网页中的动态内容.主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度.依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保存到硬盘上了. 缓存是怎么工作的? CI支持每个页面单独缓存,而且可以设置缓存更新时间.当一个网页第一次被加载的时候,缓存文件将被保存到application/cache文件夹.下次访问的时候,系统就会直接读取缓存文件,然后返回给用户的浏览器.如果缓存文件

  • CI(CodeIgniter)框架配置

    MVC的组成部分: 模型 (Model) 代表你的数据结构.通常来说,你的模型类将包含取出.插入.更新你的数据库资料这些功能. 视图 (View) 是展示给用户的信息.一个视图通常是一个网页. 控制器 (Controller) 是模型.视图以及其他任何处理 HTTP 请求所必须的资源之间的中介,并生成网页. 举例 比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. CI的特点: 简单:CodeIgniter是经过 Apache/BSD-

  • CodeIgniter中使用Smarty3基本配置

    一.创建Smarty类库 1.将smarty的libs文件复制到libraries下(这里我重命名为smarty) 2.新建Cismarty.php文件.(符合文件规范,文件名的首字母和class名的首字母大写,但是控制器引用加载时,类名/文件名不需要大写) Cismarty.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); require(APPPATH . 'libraries/smart

  • Codeigniter整合Tank Auth权限类库详解

    相交其他CodeIgniter的类库,tank_auth,配置简单,使用也简单,并且作者也一直在更新,现在是1.0.9.1.0.8已经支持CI2.0了,我现在一般的项目都是用它,所以推荐给大家. 安装Tankauth的步骤 下载最新版类库(下载地址:http://www.konyukhov.com/soft/tank_auth/tank_auth.zip) 解压文件将application下相应的文件复制到你的CIapplication文件夹下.将captcha文件夹复制到你的CI文件夹(项目目

  • codeigniter集成ucenter1.6双向通信的解决办法

    用codeigniter开发一个子网站,之后想和原来的论坛进行同步,包括同步登陆和双向通信 先装好ucenter,然后新建一个other的应用,把生成的代码拷出来,新建一个config.ini.php到你的uc_client,ucenter会产生一个yourdomain.com/api/uc.php的请求,/api/uc.php不需要填写,要保证ucenter请求正确位置,才能做到双向通信 把uc_client复制到你的网站,目录可以自己定,就根目录吧.如果你把api目录放到uc_client目

  • CodeIgniter集成smarty的方法详解

    本文实例讲述了CodeIgniter集成smarty的方法.分享给大家供大家参考,具体步骤如下: 1.下载smarty 解压到ci的libraries目录 如: ci/application/libraries/Smarty-2.6.20 2.编写Mysmarty.php 自己的类库文件 代码如下: <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); require "Smarty-2.6.20/

随机推荐