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边学边教》(01.开篇――准备工作)
Dec 13 PHP
MYSQL环境变量设置方法
Jan 15 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
Dec 05 PHP
Php中使用Select 查询语句的实例
Feb 19 PHP
php限制文件下载速度的代码
Oct 20 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP回调函数简单用法示例
May 08 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 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
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
js new Date()实例测试
2019/10/31 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
Python 连连看连接算法
2008/11/22 Python
python 字符串格式化代码
2013/03/17 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
python文件拆分与重组实例
2018/12/10 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
校园安全标语
2014/06/07 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
护理见习报告范文
2014/11/03 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
python用字节处理文件实例讲解
2021/04/13 Python
Python import模块的缓存问题解决方案
2021/06/02 Python
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
css3 选择器
2022/05/11 HTML / CSS