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+DBM的同学录程序(5)
Oct 09 PHP
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
php session 写入数据库
Feb 13 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
PHP对象相关知识总结
Apr 09 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
ADODB类使用
2006/11/25 PHP
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php跨服务器访问方法小结
2015/05/12 PHP
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Python多进程编程常用方法解析
2020/03/26 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
公司廉洁自律承诺书
2014/03/27 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
立春观后感
2015/06/18 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
配置nginx负载均衡
2022/05/06 Servers