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中养成7个面向对象的好习惯
Jul 17 PHP
php中用数组的方法设置cookies
Apr 21 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
thinkphp循环结构用法实例
Nov 24 PHP
php之static静态属性与静态方法实例分析
Jul 30 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
php时间戳转换代码详解
Aug 04 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 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实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
angularJS 入门基础
2015/02/09 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
微信小程序 生命周期函数详解
2017/05/24 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
vue项目引入ts步骤(小结)
2019/10/31 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
python实现UDP协议下的文件传输
2020/03/20 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Python中zip函数如何使用
2020/06/04 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
委托证明的格式
2014/01/10 职场文书
音乐专业自荐信
2014/02/07 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
毕业生党员个人总结
2015/02/14 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python