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 生成饼图 三维饼图
Sep 28 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
php文件上传的例子及参数详解
Dec 12 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
js 操作符实例代码
2009/10/24 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
大学信息公开实施方案
2014/03/09 职场文书
生日主持词
2014/03/20 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
敬老模范事迹
2014/05/21 职场文书
IT工程师岗位职责
2014/07/04 职场文书
爱护公物演讲稿
2014/09/09 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript