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 a simple smtp class
Nov 26 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
apache php模块整合操作指南
Nov 16 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
php实现评论回复删除功能
May 23 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 PHP
PHP数组基本用法与知识点总结
Jun 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+javascript液晶时钟
2006/10/09 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
php实现映射操作实例详解
2019/10/02 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
vue实现分页加载效果
2019/12/24 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
领导干部培训感言
2014/01/23 职场文书
导购员的岗位职责
2014/02/08 职场文书
大班幼儿评语大全
2014/04/30 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
2019年个人工作总结范文
2019/03/25 职场文书