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在window iis的莫名问题的测试方法
May 14 PHP
基于php缓存的详解
May 15 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
smarty中js的调用方法示例
Oct 27 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
php中strtotime函数性能分析
Nov 20 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 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执行sql语句的写法
2009/03/10 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
基于jquery的tab切换 js原理
2010/04/01 Javascript
javascript动态加载二
2012/08/22 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
今天,小程序正式支持 SVG
2019/04/20 Javascript
js代码实现轮播图
2020/05/04 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
Python yield与实现方法代码分析
2018/02/06 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
python、Matlab求定积分的实现
2019/11/20 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
不假外出检讨书
2014/01/27 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
中国梦团日活动总结
2014/07/07 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
销售员岗位职责范本
2015/04/11 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python