thinkphp用法小记
发布:smiling 来源: PHP粉丝网 添加日期:2014-04-19 14:03:19 浏览: 评论:0
(1)<SCRIPT SRC="/MathJax/MathJax.js">
(2)<include file="Public:MathJax_header"/>
(3)显示数据
- <volist name="list" id="vo">
- 编号:{$vo.id}<br />
- 难易程度:{$vo.NanYiChengDu}<br />
- 试题内容:{$vo.contnet}<br />
- <table width="400" border="0">
- <tr>
- <td width="3"> (A) {$vo.chioce_A}</td>
- <td width="126"> (B) {$vo.chioce_B}</td>
- <td width="126"> (C) {$vo.chioce_C}</td>
- <td width="126"> (D) {$vo.chioce_D}</td>
- </tr>
- </table>
- </volist>
(4)根据id号来编辑和删除数据
- <table border="1" width="1000">
- <volist name="list" id="vo">
- <tr>
- <td width="30">{$vo.id}</td>
- <td width="30">{$vo.NanYiChengDu}</td>
- <td width="300">{$vo.contnet}</td>
- <td width="100">{$vo.chioce_A}</td>
- <td width="126">{$vo.chioce_B}</td>
- <td width="126">{$vo.chioce_C}</td>
- <td width="126">{$vo.chioce_D}</td>
- <td><a href="__URL__/edit/id/{$vo['id']}">编辑</a> | <a href="__URL__/delete/id/{$vo['id']}"">删除</a></td>
- </tr>
- </volist>
- </table>
(5)根据id值修改或删除记录
- function edit(){
- $Mathid=$_GET['id'];
- if (!emptyempty ($Mathid)){
- $Math=D('xuanzeti');
- $data=$Math->getByid($Mathid);
- dump($data);
- $this->display();
- }
- else{
- echo "编辑的内容不存在";
- }
- }
1、普通查询
- $condition = new HashMap();
- // 查询 name 为 thinkphp 的记录
- $condition‐>put('name','thinkphp');
- // 使用数组作为查询条件
- $condition = Array();
- $condition['name'] = 'thinkphp';
使用 Map 方式查询和使用数组查询的效果是相同的,并且是可以互换的.
2、条件查询
在查询条件里面,如果仅仅使用
$map‐>put(‘name’,’thinkphp’);
查询条件应该是 name = ‘thinkphp’
如果需要进行其它方式的条件判断,可以使用
$map‐>put(‘name’,array(‘like’,’thinkphp%’));
这样,查询条件就变成 name like ‘thinkphp%’
$map‐>put(‘id’,array(‘gt’,100));
查询条件 id > 100
$map‐>put(‘id’,array(‘in’,’1,3,8’));
// 或者使用数组范围
$map‐>put(‘id’,array(‘in’,array(1,3,8)));
上面表示的查询条件都是 id in (1,3,8)
支持的查询表达式有EQ |NEQ |GT|EGT|LT |ELT |LIKE|BETWEEN|IN|NOT IN
3、区间查询
ThinkPHP 支持对某个字段的区间查询,例如:
- $map‐>put('id',array(1,10)); // id >=1 and id<=10
- $map‐>put('id',array('10','3','or')); //id >= 10 or id <=3
- $map‐>put('id',array(array('neq',6),array('gt',3),'and')); // id != 6 and id > 3
4、组合查询
如果进行多字段查询,那么字段之间的逻辑关系是 逻辑与 AND,但是用下面的规则可以更改默认的,逻辑判断,例如下面的查询条件:
- $map‐>put('id',array('neq',1));
- $map‐>put('name','ok');
- // 现在的条件是 id !=1 and name like '%ok%'
- $map‐>put('_logic','or');
- // 现在的条件变为 id !=1 or name like '%ok%'
5、多字段查询
ThinkPHP还支持直接对进行多字段查询的方法,可以简化查询表达式和完成最复杂的查询方法, 例如:
$map‐>put('id,name,title',array(array('neq',1),array('like','aaa'),array('like','bbb'),’or’));
查询条件是 ( id != 1) OR ( name like ‘aaa’) OR ( title like ‘�b%’)
如果结合上面的几种方式,我们可以写出下面更加复杂的查询条件
- $map‐>put(‘id’,array(‘NOT IN’,’1,6,9’));
- $map‐>put(‘name,email’,array(array(‘like’,’thinkphp’),array(‘like’,’liu21st’),’or’));
以上查询条件变成:( id NOT IN(1,6,9) ) AND ( ( name like ‘aaa’) OR ( title like ‘b%’) )
6、查询缓存
ThinkPHP 内建查询缓存支持,可以包括对 SQL 查询缓存、数据对象缓存的缓存支持,对于同一个数据对象的多次查询并不会导致多次数据库的查询开销,系统内置会进行缓存判断.
7、统计查询
在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP 为这些统计操作提供了一系列的内置方法.
- // 获取用户数
- $userCount = $User‐>count();
- // 获取用户的最大积分
- $maxScore = $User‐>max(‘score’);
- // 获取积分大于 0 的用户的最小积分
- $minScore = $User‐>min(‘score’,’score>0’);
- // 获取用户的平均积分
- $avgScore = $User‐>avg(‘score’);
- // 统计用户的总成绩
- $sumScore = $User‐>sum(‘score’);
8、定位查询
ThinkPHP 支持定位查询,可以使用getN 方法直接返回查询结果中的某个位置的记录。例如:
- // 返回符合条件的第 2 条记录
- $User‐>getN(2,’score>80’,’score desc’);
- 还可以获取最后第二条记录
- $User‐>getN(‐2,’score>80’,’score desc’);
- 如果要查询第一条记录,还可以使用
- $User‐>first(’score>80’,’score desc’);
- // 获取最后一条记录
- $User‐>last(’score>80’,’score desc’);
- // 获取积分最高的前 5 条记录
- $User‐>top(5,’’,’score desc’);
9、动态查询
借助 PHP5 语言的特性,ThinkPHP 实现了动态查询,该查询方式针对数据表的字段进行查询,例如,User 对象拥有 id,name,email,address 等属性,那么我们就可以使用下面的查询方法来直接根据某个属性来查询符号条件的记录.
$user = $User‐>getByName(‘liu21st’);
上面的查询会转化为$User‐>getBy(‘name’,’liu21st’)的查询语言来执行
$user = $User‐>getByEmail(‘liu21st@gmail.com’);
$user = $User‐>getByAddress(‘中国深圳’);
暂时不支持多数据字段的动态查询方法,请使用 find 方法和 findAll 方法进行查询.
ThinkPHP 还提供了另外一种动态查询方式,就是获取符合条件的前 N 条记录
例如,我们需要获取当前用户中积分大于 0,积分最高的前 5 位用户
$User‐>top5(‘score>0’,’*’,’score desc’);
而在另外一个频道,我们需要获取点击最多的前 10 位主播
$Master‐>top10(‘’,’*’,’visit desc’);
10、SQL 查询
ThinkPHP 支持原生的 SQL 查询,在某些特殊的情况下可以满足应用的需要,SQL 查询的返回值因为是直接返回的 Db 类的查询结果,没有做任何的处理,所以永远是返回的数据集对象或者惰性数据查询对象,而且可以支持查询缓存、延迟加载和事务锁(悲观锁).
SQL 查询使用 query 方法
$list = $User‐>query(“select id,name from think_user”);
如果没有使用延迟加载,返回结果是 ArrayObject 对象,如果启用了延迟加载,那么返回的是ResultIterator 对象.
11、事务支持
ThinkPHP 提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法:
- // 启动事务
- $User‐>startTrans()
- // 提交事务
- $User‐>commit()
- // 事务回滚
- $User‐>rollback();
在有些对多个数据的批量操作中,已经内建了事务支持.
Tags: thinkphp sql 用法小记
- 上一篇:关于thinkphp
- 下一篇:TP config.php改变之后
相关文章
- ·ThinkPHP中自定义错误页面和提示页面 (2013-11-15)
- ·ThinkPHP中Ajax返回(2013-11-15)
- ·ThinkPHP中处理表单中注意(2013-11-15)
- ·ThinkPHP中I(),U(),$this->post()等函数(2013-11-15)
- ·ThinkPHP中公共函数路径和配置项路径的映射(2013-11-15)
- ·ThinkPHP中公共配置文件和各自项目中的配置文件组合(2013-11-15)
- ·ThinkPHP在控制器里的javascript代码不能执行解决方法(2013-11-29)
- ·ThinkPHP3.0略缩图不能保存到子目录(2013-12-03)
- ·thinkphp的循环结构(2014-01-10)
- ·thinkphp特殊标签使用(2014-01-10)
- ·thinkphp模板输出汇总(2014-01-10)
- ·thinkphp模板的赋值与替换(2014-01-10)
- ·thinkphp连贯操作(2014-01-10)
- ·thinkphp区间查询、统计查询、SQL直接查询(2014-01-10)
- ·thinkphp的普通查询与表达式查询(2014-01-10)
- ·RBAC类在ThinkPHP中的四种使用方法(2014-01-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)