php之CodeIgniter学习笔记


Posted in PHP onJune 17, 2013

在使用数据库之前,我们最好将数据库进行自动连接: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 返回。

你可以传递参数(参数是行的索引)以便获得某一行的数据。比如我们要获得第 行的数据: $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');
声明了字段和键之后,你就可以创建一个表  

PHP 相关文章推荐
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
php实现异步数据调用的方法
Dec 24 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 PHP
apache配置虚拟主机的方法详解
Jun 17 #PHP
php unset全局变量运用问题的深入解析
Jun 17 #PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 #PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 #PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 #PHP
thinkphp 多表 事务详解
Jun 17 #PHP
基于empty函数的输出详解
Jun 17 #PHP
You might like
基于php缓存的详解
2013/05/15 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
linux面试题参考答案(8)
2016/04/19 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
小学五一劳动节活动总结
2015/02/09 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python