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与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
php验证码生成代码
Nov 11 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php include的妙用,实现路径加密
2008/07/29 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
python安装Scrapy图文教程
2017/08/14 Python
python的socket编程入门
2018/01/29 Python
Python中创建二维数组
2018/10/17 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python中return如何写
2020/06/18 Python
python各种excel写入方式的速度对比
2020/11/10 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
学生吸烟检讨书
2014/09/14 职场文书
总经理助理岗位职责
2015/01/31 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
外出培训学习心得体会
2016/01/18 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python