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+DBM的同学录程序(1)
Oct 09 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
php中session使用示例
Mar 29 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
php实现Session存储到Redis
Nov 11 PHP
php中str_pad()函数用法分析
Mar 28 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
JS实现购物车特效
2017/02/02 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
如何实现jdbc性能优化
2012/07/30 面试题
请说出几个常用的异常类
2013/01/08 面试题
怎样声明接口
2014/09/19 面试题
如何执行一个shell程序
2012/11/23 面试题
技术岗位竞聘演讲稿
2014/05/16 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
机动车交通事故协议书
2015/01/29 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书