CI里面ci or wheree的OR判断怎么写

SQL AND & OR 运算符
SQL AND & OR 运算符
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
原始的表 (用在例子中的):
Oxford Street
Fifth Avenue
Changan Street
Xuanwumen 10
AND 运算符实例
使用 AND 来显示所有姓为 &Carter& 并且名为 &Thomas& 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
Changan Street
OR 运算符实例
使用 OR 来显示所有姓为 &Carter& 或者名为 &Thomas& 的人:
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
Changan Street
Xuanwumen 10
结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
Changan Street
Xuanwumen 10php ci中的DB问题,update返回的结果无法判断是否执行成功怎么办?_百度知道
php ci中的DB问题,update返回的结果无法判断是否执行成功怎么办?
用update命令,无论更新成功或失败返回的结果均是bool(true),我想得到的结果是更新了多少条数据该怎么做?
如何获得更新了几条数据的结果;&UPDATE
user SET LastLoginTime=NOW() WHERE UserName='query($sql);{$password}'{$username}'db-&AND Password='$query = $this-&; LIMIT 1 $sql=&quot
提问者采纳
mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数说明
提问者评价
来自团队:
其他类似问题
为您推荐:
php的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(661)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_087071',
blogTitle:'CI学习(3)',
blogAbstract:'二、Model的使用:
首先在application/models目录下创建文件demomodel.php,延续上一篇里控制器名称,这里的model命名为Demomodel,同样,文件名和类名相同。
class Demomodel extends Model
function __construct()
parent::Model();//这是必须地
function get_hello()
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&&>>&&>>&正文
CI框架中数据库操作函数$this-&db-&where()相关用法总结
本文实例总结了CI框架中数据库操作函数$this-&db-&where()相关用法。分享给大家供大家参考,具体如下:
CI 框架数据库操作函数 this-&db-&where() 的使用
1) $this-&db-&where('MATCH (field) AGAINST ("value")', NULL, FALSE)
如果把$this-&db-&where() 接受可选的第三个参数设置为 FALSE, CodeIgniter 将不会为那些包含反勾号的字段名或表名提供保护。
2) $this-&db-&or_where()
本函数与上面的那个几乎完全相同,唯一的区别是本函数生成的子句是用 OR 来连接的:
$this-&db-&where('name !=', $name);
$this-&db-&or_where('id &', $id);
// 生成: WHERE name != 'Joe' OR id & 50
说明: or_where() 以前被叫作 orwhere(), 后者已经过时。
3) $this-&db-&where_in();
生成一段 WHERE field IN ('item', 'item') 查询语句,如果合适的话,用 AND 连接起来。
$names = array('Frank', 'Todd', 'James');
$this-&db-&where_in('username', $names);
// 生成: WHERE username IN ('Frank', 'Todd', 'James')
4)$this-&db-&or_where_in();
生成一段 WHERE field IN ('item', 'item') 查询语句,如果合适的话,用 OR 连接起来。
$names = array('Frank', 'Todd', 'James');
$this-&db-&or_where_in('username', $names);
// 生成: OR username IN ('Frank', 'Todd', 'James')
5)$this-&db-&where_not_in();
生成一段 WHERE field NOT IN ('item', 'item') 查询语句,如果合适的话,用 AND 连接起来。
$names = array('Frank', 'Todd', 'James');
$this-&db-&where_not_in('username', $names);
// 生成: WHERE username NOT IN ('Frank', 'Todd', 'James')
6)$this-&db-&or_where_not_in();
生成一段 WHERE field NOT IN ('item', 'item') 查询语句,如果合适的话,用 OR 连接起来。
$names = array('Frank', 'Todd', 'James');
$this-&db-&or_where_not_in('username', $names);
// 生成: OR username NOT IN ('Frank', 'Todd', 'James')
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:
[][][][][][][][][][]16205人阅读
【CodeIgniter深入研究】(41)
--------------------------------------------------------------------------------------------------------------------------------------------------
授课过程中如果涉及到文件夹或目录时,可使用缩进进行演示:
application
|-----libraries
|-----xxx_helper.php
|-----libraries
|-----url_helper.php
-----------------------------------------------------------------------------------------------------------------------------------------------------
一、什么是框架?
二、框架的优缺点分析及为什么要选择框架
三、主流MVC框架介绍:
& & 1、thinkphp
& & 2、zendframework
& & 4、yii
四、CI框架特性介绍:
& & 1、轻量级:核心系统的类库非常小
& & 2、采用了最流行的MVC架构模式
& & 3、生成干净的对搜索引擎友好化的url
& & & &http://www.kuxiu.net/index.php/common/login/
& & 4、功能非常强大:
& & & &拥有全范围的类库,可完成一个项目的大多数通用功能,包括: 读取数据库、发送电子邮件、数据确认、保存 session 、对图片的操作,以及支持 XML-RPC 数据传输等
& & 5、不需要模板引擎:
& & & &虽然CI框架自带了一个可选的模板解析器程序,但不要求你必须使用模板;
& & & &虽然模板引擎的代码比较清晰,但这会带来一个性能问题,因为伪代码要先被转换成PHP才能运行。我们的目标是性能最大化, 所以我们选择不使用专用的模板引擎。
& & & &当然,我们也可以使用ci框架自带的模板引擎,也可以整合第三方的模板引擎到ci框架中:smarty模板引擎
& & 6、中文化的文档全面:
& & & &虽然是一款国外的框架,但是中文化的文档也是非常全面,便于我们查阅
五、MVC模式:
六、CI框架执行流程深入分析:
& & &第一步:入口文件:
& & & & & & &//加载引导文件,http://www.kuxiu.net/system/core/CodeIgniter.php文件
& & require_once BASEPATH.'core/CodeIgniter.php';
& & &第二步:require_once BASEPATH.'core/CodeIgniter.php';中
& & & & & & &//加载公共的函数库
& & require(BASEPATH.'core/Common.php');
& & require(APPPATH.'config/constants.php');//常量文件
& & 配置类,加载配置文件时使用,如:
& & $this-&config-&load();
& & $this-&config-&item();
& & $this-&config-&set_item();
& & $CFG =& load_class('Config', 'core');
& & $URI =& load_class('URI', 'core');
& & $RTR =& load_class('Router', 'core');
& & $OUT =& load_class('Output', 'core');
& & $SEC =& load_class('Security', 'core');
& & $IN &=& load_class('Input', 'core');
& & require BASEPATH.'core/Controller.php';//系统基类控制器文件
& & return CI_Controller::get_instance();
& & //在扩展系统基控制器时使用:MY_Controller.php
& & if (file_exists(APPPATH.'core/'.$CFG-&config['subclass_prefix'].'Controller.php')){
require APPPATH.'core/'.$CFG-&config['subclass_prefix'].'Controller.php';//如:MY_Controller.php
& & $class &= $RTR-&fetch_class();//当前请求的控制器,如:common
& & $method = $RTR-&fetch_method();//当前请求的控制器中的方法,如:index
& & $CI = new $class();//实例化当前请求的控制器类对象
& & 关于hook的资料:就是在系统引导流程中插入自己的代码,而不用修改核心代码
& & 貌似可以在 控制器之前(或者其他时候) 执行自己的代码,执行某个对象的方法或者某个函数。我现在把需要在所有控制器中都执行的代码移到hook中了。应该就是这么用的吧?
& & 虽然很神,但是实际上运用hook的情况不多(因为ci已经解决了大部分你可能会遇到的问题)。当使用扩展无法达到目的时,才会考虑钩子。
& & hook在你执行controller之前执行,举一个例子吧,有一次,项目要上线,但是服务器时间怎么调也不正确。(因为要存订单时间),没办法,一时调不好服务器,就写了一个钩子设置时区。(只是作为临时方案)
& & 1、index.php 作为前端控制器,初始化运行 CodeIgniter 所需要的基本资源。&
& & 2、Router 检查 HTTP 请求,以确定谁来处理请求。&
& & 3、如果缓存(Cache)文件存在,它将绕过通常的系统执行顺序,被直接发送给浏览器。&
& & 4、安全(Security)。应用程序控制器(Application Controller)装载之前,HTTP 请求和任何用户提交的数据将被过滤。&
& & 5、控制器(Controller)装载模型、核心库、辅助函数,以及任何处理特定请求所需的其它资源。&
& & 6、最终视图(View)渲染发送到 Web 浏览器中的内容。如果开启缓存(Caching),视图首先被缓存,所以将可用于以后的请求。&
七、URL调度模式:
& & 1、如何修改默认执行的控制器和方法:
& & & &application/config/routes.php中配置如下项:
& & & &$route['default_controller'] = &common&;//默认执行的控制器
八、model详解:
& & 1、模型类的命名规范:主需要首字母大写即可,建议采用 User_model 形式
& & 2、引用模型的两种方式:
& & & &$this-&load-&model(&user_model&);//引用user_model模型
& & & &$this-&load-&model(&User_model&);//应用user_model模型,这两种方式是等价的
九、实例化模型的执行流程:
& & $this-&load-&model(&user_model&);//引用user_model模型
十、CI框架中session与cookie类库的使用:cookie登陆、session登陆
十一、CI框架中文件处理类库及图像处理类库的使用:文件上传、缩略图、水印功能
十二、CI框架与smarty模板引擎的无缝整合:在项目中的应用
& & 提示:虽然模板引擎的代码比较清晰,但这会带来一个性能问题,因为伪代码要先被转换成PHP才能运行。我们的目标是性能最大化, 所以我们选择不使用专用的模板引擎
十三、CI框架与UEditor编辑器的无缝整合:在项目中的应用(路径问题)
十四、CI框架与报表类库的无缝整合:在项目中的应用(报表的导入导出)
十五、导入机制和配置文件加载流程介绍
十六、配置文件:
& & 1、主配置文件:application/config/config.php,已自动加载,无需手动启用
& & & &分析:配置项目被存储在一个叫$config[]的数组里面,你可以添加自己的配置项目到这个文件中
& & 2、加载单个自定义的配置文件:
& & & &$this-&config-&load(&thumb_settings&);//配置文件的文件名,不带.php扩展名
& & 3、加载多个自定义配置文件:
& & & &如果需要加载多个自定义配置文件,一般情况下他们会被合并为一个数组;如果在不同的配置文件中存在同名的索引,那么将会发生冲突;为了避免这个问题,你可以将第二个参数设置为true、这样可以使每个配置文件中的内容存储在一个单独的数组中,数组的索引就是配置文件的名称
& & & &$this-&config-&load(&thumb_settings&,true);
& & & &//相当于如下方式:&
& & & &$this-&config['thumb_settings'] = $thumb_
& & & &//参数3用来屏蔽当配置文件不存在时产生的错误信息
& & & &$this-&config-&load(&thumb_settings&,false,true);
& & 4、如何获取配置文件中的配置项:
& & & &//加载配置文件:
& & & &$this-&config-&load(&thumb_settings&);//缩略图相关的配置文件
& & & &//当视图获取的配置项不存在时,将返回false
& & & &$this-&config-&item(&config_thumb&);//缩略图的相关配置项
& & 5、如何动态设置一个配置项:
& & & &//动态设置生成的缩略图的名字
& & & &$this-&config-&set_item(&new_image&,time.().$this-&file_ext);
& & 6、思考一个问题:配置项是否可以为数组呢?
& & 7、配置类辅助函数:
& & & &$this-&config-&site_url();//网站URL
& & & &如何将url路径中的index.php屏蔽?
& & & &$config['index_page'] = 'index.php';//如:http://www.kuxiu.net/index.php/
& & & &$config['index_page'] = '';//如:http://www.kuxiu.net/
& & & &$this-&config-&base_url();//返回站点的根目录
& & & &提示:在生成images、css、js等的url时非常实用
& & & &$this-&config-&system_url();//该函数用来得到system文件夹的url
十七、分页类的使用:
& & & //加载分类类库
& & & $this-&load-&pagination(&pagination&);
十八、数据库的增删改查:
& & & 普通查询:
& & & 1、$this-&db-&database();//加载数据库实例化对象
& & & 2、$query=$this-&db-&query($sql);//执行查询,返回结果集;注意:query是普通数据库操作类中的方法,快捷操作类继承自普通数据库操作类,所以快捷操作类中也有query方法,query方法返回一个结果集对象
& & & 3、$object_array=$query-&result();//返回一个对象数组;result是结果集类中的方法
& & & & &foreach($object_array as $object){
& echo $object-&
& & & & &}
& & & 4、$data_array=$query-&result_array();//返回一个二维关联数组;result_array()是结果集类中的方法,主要用来将结果集转换为二维关联数组
& & & & &foreach($data_array as $row){
& echo $row['name'];
& & & & &}
& & & 5、$object=$query-&row();//返回一个对象;
& & & 6、$row=$query-&row_array();//返回一维数组
& & & 7、$query-&num_rows();//返回查询到的记录数
& & & 8、$this-&db-&affected_rows(); //返回受影响的记录数
& & & 9、$this-&db-&insert_id();//返回最新插入记录的id
& & & 快捷查询:
& & & 插入数据:
& & & $this-&db-&insert(&user&,$data);
& & & 分析:参数1:表名,不带前缀,因为在配置文件中设置过数据表的前缀了
& & & & & & 参数2:包含数据的关联数组
& & & & & & 缺点:$data关联数组中的键名要与user表中字段名一一对应,缺一不可
& & & 注意:$this-&db-&insert_batch();
& & & 更新数据:
& & & $this-&db-&update(&user&,$data,条件);
& & & 分析:参数1:表名,同上
& & & & & & 参数2:包含数据的关联数组
& &参数3:更新条件,有两种形式:
数组形式:array(&id&=&4)
键值对形式:&id=4&
& & & 删除数据:
& & & $this-&db-&delete(&user&,条件);//条件同上
& & & 查询数据:
& & & $query=$this-&db-&get();//返回结果集
& & & //参数2:每页记录数 参数3:开始位置;
& & & $query=$this-&db-&get(&user&,$pagesize,$limit);
& & & $data_array=$query-&result_array();//将结果集转化为数组
& & & $this-&db-&get_where(&user&,$where,$limit,$pagesize);//查询结果集,条件同上
& & & //在执行查询之前,我们可以随意设置查询的字段及条件
& & & $this-&db-&select(&username,realname,password&);//字段间以逗号相隔
& & & $this-&db-&select_max(&id&);//查询最大id
& & & $this-&db-&select_min(&id&);//查询最小id
& & & $this-&db-&select_avg(&score&);//平均值
& & & $this-&db-&select_sum(&score&);//总值
& & & //主要用来设置表名,如果使用了此函数,在$this-&db-&get();函数中就无需表名了
& & & $this-&db-&from(&user&);
& & & $this-&db-&where();//传递给本函数的所有值都会被自动转义,以便生成安全的查询
& & & 条件形式:
& & & 简单的键值对:
$this-&db-&where('name', $name);&
& & & 自定义键值对:
$this-&db-&where('name !=', $name);
$this-&db-&where('id &', $id);&
& & & 关联数组:
$where=array(&username&=&$username,&password&=&$password)
& & & 字符串格式:
& & & & & & & & $where = &name='Joe' AND status='boss' OR status='active'&;
$this-&db-&where($where);
& & & 注意:条件中可以包含运算符
& & & $this-&db-&or_where();
& & & $this-&db-&where_in();
& & & $this-&db-&or_where_in();
& & & $this-&db-&where_not_in();
& & & $this-&db-&or_where_not_in();
& & & $this-&db-&group_by();
& & & $this-&db-&distinct();
& & & $this-&db-&having();
& & & $this-&db-&order_by();
& & & $this-&db-&limit(10);
& & & $this-&db-&count_all_results(&user&);
& & & 分析:此函数允许你获得某个特定的Active Record查询所返回的结果数量。可以使用Active Record限制函数,例如 where(), or_where(), like(), or_like() 等等。范例:
& & & $this-&db-&set();//它可以用来代替那种直接传递数组给插入和更新函数的方式
& & & 案例:
& & & $this-&db-&set('name', $name);&
& & & $this-&db-&insert('mytable'); //生成: INSERT INTO mytable (name) VALUES ('{$name}')
& & & $this-&db-&empty_table();
& & & $this-&db-&truncate();
& & & 链式查询:链式方法允许你以连接多个函数的方式简化你的语法
& & & $this-&db-&select('title')-&from('mytable')-&where('id', $id)-&limit(10, 20);
& & & $query = $this-&db-&get();
十九、辅助函数的加载:
& & & //单个辅助函数文件的加载
& & & $this-&load-&helper(&url&);//辅助函数文件的名字
& & & //多个辅助函数文件的加载
& & & $this-&load-&helper(array(
&pagination&,
&image_lib&
& & & //一旦你载入了想要用到辅助函数文件,可以用标准的函数调用方法来使用里面的函数。
& & & base_url();// $this-&base_url()是错误的写法
& & & 1、如何扩展系统原有的helper函数库?
& & & & &在application/helpers/ 文件夹下建立一个文件,命名为:MY_原系统函数库名.php
& & & 2、如何设置默认扩展文件名的前缀?
& & & & &找到application/config/config.php配置文件
& & & & &修改$config['subclass_prefix'] = 'MY_';即可
& & & 3、如何修改数据表的前缀?
& & & & &找到application/config/database.php配置文件
修改$db['default']['dbprefix'] = 'gt_';//数据表的前缀
二十、如何设置url路由及url后缀
$config['uri_protocol'] = 'AUTO';//路由形式,如:http://www.kuxiu.net/common/index/1/
$config['uri_protocol'] = 'PATH_INFO';//路由形式,如:http://www.kuxiu.net/common/index?x=a&y=b
$config['url_suffix'] = '';//url后缀,如:http://www.kuxiu.net/common/index.html
二十一、总结:
1、关于缩略图的配置项目可以放在config.php文件中
2、$this-&db-&insert(&user&,$data);//要求数据表中除主键字段外,其它字段在$data关联数组中都有默认值才能执行成功,提示:$data一般为一维关联数组
& &$this-&db-&insert_batch(&user&,$data);//$data一般为二维关联数组
3、跳转:header(&location:&.site_url(&common/login&));
4、设置时区
& &$config['time_zone']=date_default_timezone_set('Asia/shanghai');
5、推荐使用链式操作
& &$query=$this-&db-&query($sql);
& &$data_array=$query-&result_array();
& &等价于:
& &$data_array=$this-&db-&query($sql)-&result_array();
6、如何配置ueditor编辑器文件上传的路径,如:将图片上传到根目录下面的 php/upload/ 下
& &首先:将ueditor/php/ 文件夹复制粘贴到根目录下
& &然后:在模板文件中修改文件上传路径:
&!--注意:js文件的引入必须在body体中,否则不生效--&
&script type=&text/javascript& src=&http://www.kuxiu.net/public/js/ueditor/editor_config.js&&&/script&
&script type=&text/javascript& src=&http://www.kuxiu.net/public/js/ueditor/editor_all.js&&&/script&
&script type=&text/javascript&&
var ue = new UE.ui.Editor({
initialFrameWidth:750,//编辑器初始化宽度
initialContent:'',//编辑器初始化内容
imagePath:&/php/&,//图片上传路径,默认情况下图片上传路径的upload文件夹与图片上传脚本同目录,所以这样配置生成如下效果:&/php/upload/&
imageUrl:&/php/imageUp.php&//图片上传脚本文件
ue.render('content')//给id为content的textarea表单控件渲染一个编辑器
{/literal}
& &思考:默认情况下,编辑器是按照日期自动创建存储的文件夹的,如何修改这一规律?
找到php/Upload.class.php文件中的getFolder()函数,修改如下:
& & & & /**
& & & & &* 按照日期自动创建存储文件夹
& & & & &* @return string
& & & & &*/
& & & & private function getFolder(){
& & & & & & $pathStr = $this-&config[ &savePath& ];//保存路径
& & & & & & if ( strrchr( $pathStr , &/& ) != &/& ) {//保存路径必须以&/&结尾
& & & & & & & & $pathStr .= &/&;
& & & & & & }
& & & & & & $pathStr .= date( &Ymd& );//年月日
& & & & & & if ( !file_exists( $pathStr ) ) {//如果目录不存在
& & & & & & & & if ( !mkdir( $pathStr , 0777 , true ) ) {//层级创建目录
& & & & & & & & & &//创建失败返回false
& & & & & & & & }
& & & & & & }
& & & & & & ///return $pathS//创建成功返回路径
& & & & } & &&
7、系统加载类库:core/Loader.php
& &如下函数都在此类库中定义
& &$this-&load-&model(&&);
& &$this-&load-&library(&&);
& &$this-&load-&database(&&);
& &$this-&load-&helper(&&);
& &$this-&config-&load();
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、在讲解文件所在目录方面的问题时:
application
|-----core
|-----MY_Controller.php
|-----core
|-----Controller.php
一、目前在企业中使用比较多的框架有如下几种:
1、zendframework框架:此框架由zend公司开发并负责维护,入门比较困难一点,但是据说功能很强悍,属于一款偏重量级的MVC框架
2、Yii框架:又称为 &易框架&,在外企使用居多
3、thinkphp框架:是国人开发的一款框架,由于它的注释和使用文档都是中文,所以很受国人的喜欢
4、codeigniter框架:简称CI框架,是国外一款流行的框架,跟前面的框架比较,ci框架是最轻量级的,也是最容易上手的
二、我们选择这款框架来学习,主要有以下几点原因:
1、ci是一个轻量级的框架,关于轻量级,可从两方面来理解:
1、体积小,解压后不到4M,zendframework解压后60M左右
2、占用资源少:ci应用程序在运行的时候,只是将正常运行所必须的几个核心类库载入到了内存中,其它类库在请求的时候才会加载,这样就达到了资源的最小化,这跟那些需要很多资源的框架是不一样的,有些框架在运行的时候,会将所有的类库首先载入内存中,而不管这些类库是否能够用的到,如:cakephp
3、但是这个轻量级,并不影响它开发大型的web应用程序,为什么这么说呢?
首先,它自身所提供的类库,已经能够帮助我们完成web应用程序中的大部分功能
再者,ci框架在整合第三方类库方面也有独到的优势,几乎不需要进行任何配置
2、整合第三方类库简单,几乎不需要进行任何配置
3、不需要使用模板引擎技术
大家知道,php原生态的语法结构执行效率是最高的,因为跟使用了模板引擎技术的程序相比较,它少了一个编译的过程
三、下面,我们就来进行ci框架的安装:
ci框架的安装,我们只需要按照如下步骤进行操作就可以了
1、官网: 去下载ci框架最新的版本,目前最新版本为2.1.3
中文网站:http://www.
2、下载完毕后,解压,并将其复制粘贴到程序的主目录(d:/wamp/xmall/),然后再将其重命名为&myshop&,那么&myshop& 就作为ci项目名称存在了
3、为我们的ci项目搭建一个虚拟主机:
首先,找到httpd.conf配置文件,开启虚拟主机的配置
然后,找到httpd-vhosts.conf配置文件,进行虚拟主机的配置
最后,找到hosts配置文件,为我们的ci项目添加dns映射
4、在浏览器中输入 /index.php 回车,如能看到如下欢迎界面,则表示我们的ci项目安装成功了
四、ci框架的目录结构分析:
了解ci框架的目录结构,有助于帮助我们快速建立起对ci框架的一个整体认识
打开&myshop&项目,有如下文件和目录
使用协议说明文档、英文版的用户手册,这两项不是项目所必须的,可暂时将其删除
|-----system
框架程序目录
|-----core
框架的核心程序
|-----CodeIgniter.php 引导性文件
|-----Common.php 加载基类库的公共函数
|-----Controller.php 基控制器类文件:CI_Controller
|-----Model.php
基模型类文件:CI_Model
|-----Config.php 配置类文件:CI_Config
|-----Input.php
输入类文件:CI_Input
|-----Output.php 输出类文件:CI_Output
|-----URL.php
URL类文件:CI_URl
|-----Router.php 路由类文件:CI_Router
|-----Loader.php 加载类文件:CI_Loader
|-----helpers
|-----url_helper.php url相关的辅助函数,如:创建url的辅助函数
|-----captcha_helper.php创建图形验证码的辅助函数
|-----libraries
|-----Pagination.php 通用分页类库
|-----Upload.php 通用文件上传类库
|-----Image_lib.php 通用图像处理类库
|-----Session.php 通用session类库
|-----language
|-----database
数据库操作相关的程序
|-----DB_active_rec.php 快捷操作类文件(ActiveRecord)
|-----fonts
|-----application
|-----core
项目的核心程序
|-----helpers
项目的辅助函数
|-----libraries
|-----language
|-----config
项目相关的配置
|-----config.php 项目相关的配置文件
|-----database.php 数据库相关的配置文件
|-----autoload.php 设置自动加载类库的配置文件
|-----constants.php 常量配置文件
|-----routes.php 路由配置文件
|-----controllers
控制器目录
|-----welcome.php 控制器文件,继承CI_Controller
|-----models
|-----welcome_model.php 模型文件,继承CI_Model
|-----views
|-----welcome.php 视图模板文件,默认后缀名为.php
|-----cache
存放数据或模板的缓存文件
|-----errors
错误提示模板
|-----hooks
钩子,在不修改系统核心文件的基础上扩展系统功能
|-----third_party
|-----logs
|-----index.php
五、ci框架中的url路由规则:
浏览器中输入 /index.php/welcome/index/
回车时,默认情况下会找到
application
|-----controllers
|-----welcome.php
控制器文件,并执行其中的index方法
|-----admin
|-----category.php 控制器文件
到底是不是呢?我们打开welcome.php控制器文件,并在index方法中添加一些代码,运行输出,证明确实如我们所料
我们可以将浏览器中的url归纳如下:http://域名/入口文件/控制器/方法/参数列表
当输入网址回车时,默认情况下会直接从controllers目录下寻找控制器文件,
如果我们的控制器文件放在controllers目录下的子目录中,又该如何访问呢?
例如:在controllers目录建立一个admin子目录,然后呢,在admin子目录下创建一个category.php控制器文件
那么,我们在访问category.php控制器文件中的addcategory方法时,在浏览器中怎样访问呢?
我们可以这样来访问:
/index.php/admin/category/addcategory/
即:http://域名/入口文件/controllers下的子目录/控制器/方法/参数列表
我们在浏览器中输入/index.php 后面没有跟 &控制器/方法/参数列表& 回车时,默认情况下也会执行welcome.php控制器中的index方法。
这是因为ci框架为我们指定了一个默认的控制器和方法
默认控制器的设置在 &application/config/routes.php& 配置文件中进行设置的,我们可以重新设置默认的控制器
六、项目的部署:我们在实际部署大型项目时,还可以建立一些子目录及文件来帮助我们更好的管理我们的项目
1、子目录及入口文件的创建
controllers
|-----admin
后台控制器
|-----home
前台控制器
|-----admin
后台模型文件
|-----home
前台模型文件
|-----admin
后台模板文件
|-----category 后台商品分类模块相关的模板文件
|-----addcategory.html
|-----public 后台公共模板文件
|-----top.html
|-----left.html
|-----footer.html
|-----home
前台模板文件
|-----MY_Controller.php 扩展后的控制器文件,继承CI_Controller
|-----images
images文件
|-----admin 后台images文件
|-----home 前台images文件
|-----admin 后台css文件
|-----home 前台css文件
|-----admin 后台js文件
|-----home 前台js文件
后台入口文件:访问后台控制器,都必须经过admin.php入口
前台入口文件:访问前台控制器,都必须经过index.php入口
2、将后台模板文件及素材文件部署到我们的ci项目中来
css文件中采用绝对路径
模板文件中采用绝对路径
3、建立后台控制器文件:
application
|-----controllers
|-----admin
|-----index.php
index.php控制器文件
|-----user.php
用户控制器文件
控制器的命名规范
$this-&load-&view(&admin/index.html&);//将后台模板文件显示出来
4、将前后台素材文件的路径写到常量文件中:application/config/constants.php
define(&IMG_PATH&,&/public/images/&); //images路径
define(&CSS_PATH&,&/public/css/&);
define(&JS_PATH&,&/public/js/&);
直接在控制器中获取常量的值:
$data['img_path']=IMG_PATH;
$data['css_path']=CSS_PATH;
$data['js_path']=JS_PATH;
将$data数组传递给模板文件:
$this-&load-&view(&admin/index.html&,$data);//参数2:关联数组
5、也可以将素材文件的路径放到application/config/config.php配置文件中
$config['img_path']=&/public/images/&;
$config['js_path']=&/public/css/&;
$config['js_path']=&/public/js/&;
在控制器中获取application/config/config.php配置文件中的配置项:
$data['img_path']=$this-&config-&item(&img_path&);
$data['css_path']=$this-&config-&item(&css_path&);
$data['js_path']=$this-&config-&item(&js_path&);
将$data数组传递给模板文件
$this-&load-&view(&admin/index.html&,$data);//参数2:关联数组
6、建立后台模型文件:
application
|-----models
|-----admin
|-----user_model.php
用户模型文件
模型文件的命名规范
如何在控制器中调用模型文件:
//1、实例化后台的user_model类对象,对象名称为user_model
//2、将user_model实例化对象作为控制器的user_model属性
//3、因此,我们可以在控制器中通过 $this-&user_model 来获取user_model类对象,继而可以调用对象中的方法
$this-&load-&model(&admin/user_model&);
$this-&user_model-&adduser();
7、数据库操作:
数据表的创建:gt_users
导入一些数据
查询用户:首先在model中连接数据库,$this-&load-&database();然后我们可以在模型类的方法中查询所有的数据
在ci框架中操作数据库可分为两种方式
(1)方式一:普通查询:通过sql语句及db类的query()方法来完成,如下所示:
下面,我们先通过第一种方式来完成用户管理系统
//insert、delete、update操作返回布尔true或false
//select操作成功时返回结果集对象,失败时返回布尔值false
$query=$this-&db-&query($sql);
//通过结果集对象的方法将结果集转化为数据或对象
$data_array=$query-&result_array();//将结果集转换为二维关联数组
$row_array=$query-&row_array();//将结果集转换为一维关联数组
//获取查询到的行数
$num=$query-&num_rows();
//db类中insert_id():返回最后一次插入数据的id
$id=$this-&db-&insert_id();
//分页类库的载入:
$this-&load-&library(&pagination&);//载入system/libraries/pagination.php分页类库
//分页配置:
$config['base_url']=&/index.php/user/userlist/&;
$config['total_rows']=200;//总记录数,可从数据库获取
$config['per_page']=10;//每页显示的记录数
$config['...']=&...&;//其他配置
//初始化配置,使得分页配置生效
$this-&pagination-&initialize($config);
//创建默认风格的分页代码
$pages=$this-&pagination-&create_links();//$content['pages']
//limit的值
$limit=($page-1)*$config['per_page'];
//注意:传递给模板文件的数据都必须放到关联数组中,会将关联数组中元素做为变量
$this-&load-&view(&login.html&,$content);//相当于extract($content)
//将分页配置信息放到application/config/pagination.php配置文件中
//载入pagination.php配置文件
$this-&config-&load(&pagination&);
//获取配置选项
$per_page=$this-&config-&item(&per_page&);//每页显示的记录数
链式操作:可采用链式操作
$data_array=$this-&db-&query($sql)-&result_array();
$row_array=$this-&db-&query($sql)-&row_array();
(2)方式二:快捷查询:主要通过快捷操作类来进行数据库操作(ActiveRecord)
什么是快捷操作类:主要用来将sql语句的拼接放到类的方法中来完成。
下面,我们再使用第二种方式来完成用户管理系统
//查询操作
$this-&db-&get(&users&,10,20);//参数2:每页显示的记录数
参数3:开始查询位置
$this-&db-&get_where(&users&,array('id'=&1),10,20);//参数3:每页显示的记录数
//案例1:在函数内部帮助我们自动拼接sql语句
$this-&db-&select(&*&);//1、返回一个db类实例化对象 2、将实例化对象作为模型类的db属性
$this-&db-&from(&users&);
$this-&db-&where(&id&,3);
$this-&db-&order_by(&id&,&desc&);
$this-&db-&get();
$this-&db-&select(&*&);
$this-&db-&where(&id&,3);
$this-&db-&order_by(&id&,&desc&);
$this-&db-&get(&users&);
$this-&db-&count_all_results();//获取查询到的总记录数
//插入操作:
$this-&db-&insert(&users&,$data_array);//参数1:表名
参数2:关联数组
//更新操作:
$this-&db-&update(&users&,$data_array,$where);//参数1:表名
参数3:关联数组
//删除操作:
$this-&db-&delete(&users&,$where);//参数1:表名
参数2:关联数组
//关于$where条件分析:
单条件时:使用键值对形式的条件
做比较时:使用运算符格式的条件
多条件时:使用关联数组的格式
链式操作:
//将结果集转化为二维关联数组
$data_array=$this-&db-&select('title')-&from('mytable')-&where('id', $id)-&limit($limit, $pagesize)-&get()-&result_array();
//将结果集转化为一维关联数组
$row_array=$this-&db-&select('title')-&from('mytable')-&where('id', $id)-&get()-&row_array();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1385763次
积分:16970
积分:16970
排名:第365名
原创:380篇
转载:257篇
评论:351条
(1)(1)(17)(2)(2)(1)(7)(8)(3)(21)(32)(38)(6)(5)(13)(11)(25)(1)(18)(2)(1)(11)(30)(8)(10)(12)(73)(114)(67)(74)(23)(1)}

我要回帖

更多关于 ci where 不等于 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信