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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
Yii多表联合查询操作详解
Jun 02 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP简单实现模拟登陆功能示例
Sep 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
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
实例讲解React 组件
2020/07/07 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
bpython 功能强大的Python shell
2016/02/16 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python实现动态数组的示例代码
2019/07/15 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
Python: 传递列表副本方式
2019/12/19 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
社区工作者感言
2014/03/02 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
党的群众路线调研报告
2014/11/03 职场文书
北京故宫的导游词
2015/01/31 职场文书
党支部半年考察意见
2015/06/01 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python