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 print类函数使用总结
Jun 25 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
PHP下常用正则表达式整理
Oct 26 PHP
如何用C语言编写PHP扩展的详解
Jun 13 PHP
php获取新浪微博数据API实例
Nov 12 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
PHP中new static() 和 new self() 的区别介绍
Jan 09 PHP
PHP中is_dir()函数使用指南
May 08 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
Javascript的闭包详解
2014/12/26 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
酒店应聘自荐信
2013/11/09 职场文书
大学生活学习的自我评价
2013/12/03 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
小班下学期个人总结
2015/02/12 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
简单的辞职信模板
2015/05/12 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android