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 EOT定界符的使用详解
Sep 30 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
PHP会话处理的10个函数
Aug 11 PHP
全面了解PHP中的全局变量
Jun 17 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
JavaScript delete操作符应用实例
2009/01/13 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
python关于变量名的基础知识点
2020/03/03 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
C#笔试题集合
2013/06/21 面试题
财务部岗位职责
2013/11/19 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
2014年底个人工作总结
2015/03/10 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
在职证明书模板
2015/06/15 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书