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 相关文章推荐
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
php短域名转换为实际域名函数
Jan 17 PHP
Views rows style模板重写代码
May 16 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
spl_autoload_register与autoload的区别详解
Jun 03 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
解析php5配置使用pdo
Jul 03 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
PHP调用其他文件中的类
Apr 02 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
laravel使用redis队列实例讲解
Mar 23 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 json_encode值中大括号与花括号区别
2013/09/30 PHP
详解php用static方法的原因
2018/09/12 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
八大排序算法的Python实现
2021/01/28 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python取余运算符知识点详解
2019/06/27 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
python selenium 获取接口数据的实现
2020/12/07 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
师说教学反思
2014/02/07 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
经费申请报告范文
2015/05/18 职场文书
《给予树》教学反思
2016/03/03 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书