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伪静态页面函数附使用方法
Jun 20 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
python 性能优化方法小结
2017/03/31 Python
用python与文件进行交互的方法
2018/03/01 Python
解读python logging模块的使用方法
2018/04/17 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
TensorFlow实现模型评估
2018/09/07 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python isinstance函数用法详解
2020/02/13 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
python wsgiref源码解析
2021/02/06 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
What is EJB
2016/07/22 面试题
单位提档介绍信
2014/01/17 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
运动会广播稿200字
2014/10/18 职场文书
公务员考察材料范文
2014/12/23 职场文书
2015公司年度工作总结
2015/05/14 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书