thinkPHP框架中执行原生SQL语句的方法


Posted in PHP onOctober 25, 2017

本文实例讲述了thinkPHP框架中执行原生SQL语句的方法。分享给大家供大家参考,具体如下:

怎样在thinkphp里面执行原生的sql语句?

$Model = new Model();//或者 $Model = D(); 或者 $Model = M();
$sql = "select * from `order`";
$voList = $Model->query($sql);

只是需要new一个空的模型继承Model中的方法。

注意query是查功能,execute是增删改功能

查询和读取属性值的实例:

$sql = "select * from goods";
$Model = M();
$result = $Model->query($sql);
foreach ($result as $k=>$val){
$goods_id = $val["goods_id"];
}

tP的模型可以支持原生SQL操作,提供了query和execute两个方法,为什么原生SQL还要区分两个方法呢,原因有两个:

1、返回类型不同

query用于查询返回的是数据集,和select或者findall一样,所以可以直接在模板里面使用volist标签输出query的查询结果

execute用于写操作返回的是状态或者影响的记录数

2、读写统计需要

为了便于统计当前的数据读写次数,把数据库的读和写操作分开(对应的就是query和execute)

使用原生SQL很简单,我们甚至不需要实例化任何的模型,例如:

$Model = new Model(); // 实例化一个空模型

下面的方法是等效的

$Model = D();// 或者 $Model = M();
// 下面执行原生SQL操作
$Model->query('select * from think_user where status=1');
$Model->execute('update think_user set status=1 where id=1');

如果你实例化了某个模型,仍然可以执行原生SQL操作,不受影响,例如:

$User = D('User');
$User->query('select * from think_user where status=1');
$User->execute('update think_user set status=1 where id=1');

在这种情况下面,我们可以简化SQL语句的写法,例如:

$User->query('select * from __TABLE__ where status=1');
$User->execute('update __TABLE__ set status=1 where id=1');

系统会自动把__TABLE__替换成当前模型对应的数据表名称,实际的数据表由模型决定。

通常来说,我们都是使用原生SQL操作实现一些ORM和CURD比较难实现的操作,另外,如果SQL不复杂的话 原生SQL的效率和连贯操作的效率差别是微乎其微的,TP本身的ORM实现也是相当高效的。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
php设计模式之命令模式的应用详解
May 21 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
解决php写入数据库乱码的问题
Sep 17 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 PHP
php调用云片网接口发送短信的实现方法
Oct 25 #PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 #PHP
Laravel学习教程之request validation的编写
Oct 25 #PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 #PHP
Yii2.0实现生成二维码功能实例
Oct 24 #PHP
完美的php分页类
Oct 24 #PHP
PHP设计模式之工厂模式详解
Oct 24 #PHP
You might like
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
discuz目录文件资料汇总
2014/12/30 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jquery json 实例代码
2010/12/02 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
Linux下python制作名片示例
2018/07/20 Python
python实现周期方波信号频谱图
2018/07/21 Python
python中强大的format函数实例详解
2018/12/05 Python
Django之模型层多表操作的实现
2019/01/08 Python
Python的UTC时间转换讲解
2019/02/26 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
基层党员公开承诺书
2014/05/29 职场文书
环卫个人总结
2015/03/03 职场文书
企业财务管理制度范本
2015/08/04 职场文书
新课程改革心得体会
2016/01/22 职场文书