query($sql);只是需要new一个空的模型继承Mode" />
当前位置:首页 > 日记 > 正文

thinkPHP框架中执行原生SQL语句的方法

thinkPHP框架中执行原生SQL语句的方法

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关文章

JS实现小球的弹性碰撞效果

JS实现小球的弹性碰撞效果

弹性碰撞,小球,效果,电脑软件,JS,一、HTML代码(body部分) <body> <!--只需要做一个大div包裹几个小div即可,你想要几个小球碰撞就在内部做几个div即可,这里我们做了6个小球--> <div id="main"> <div></div> <div></div> <di…

.NET附件上传大小限制控制

.NET附件上传大小限制控制

控制,上传,附件,大小,电脑软件,今天在公司的服务器上搭建了一个Dvbbs.Net 1.1,协助管理公司一些办公文件,由于要上传的文件大小部分较大(超过几十兆),所以今天的大部分时间是研究怎么破除上传的限制问题。知道23点以后才基本上解决。现将问题处…

PHP实现在对象之外访问其私有属性p

PHP实现在对象之外访问其私有属性p

私有属性,对象,属性,方法,问其,本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下:public 表示全局的访问权限,类内部外部子类都可以访问;private表示私有的访问权限,只有本类内…

NodeJS创建最简单的HTTP服务器

NodeJS创建最简单的HTTP服务器

服务器,最简单,电脑软件,NodeJS,HTTP,☆ 引子var http = require('http');http.createServer(function(request, response){ response.writeHead(200, { 'Content-Type': 'text-plain' }); response.end('Hello World\n');}).li…

jQuery实现html table行Tr的复制、

jQuery实现html table行Tr的复制、

计算,删除,功能,电脑软件,html,本文实例讲述了jQuery实现html table行Tr的复制、删除、计算功能。分享给大家供大家参考,具体如下:添加行:function addtr(){ var tr = $("#tb tr").eq(0).clone(); tr.appendTo("#tb"); //tr.insertB…

vue2.0 自定义日期时间过滤器

vue2.0 自定义日期时间过滤器

自定义,过滤器,日期时间,电脑软件,方法一:// template{{a | data}}//scriptdata:{ a: Date.now()}filters: { data:function (input) { var d = new Date(input); var year = d.getFullYear(); var month = d.getMonth() + 1; …

Bootstrap学习笔记之进度条、媒体

Bootstrap学习笔记之进度条、媒体

进度条,对象,媒体,详解,学习笔记,1.基础进度条要写在<div class="progress"></div>里面。<div class="col-md-6"> <div class="progress"> <div class="progress-bar" style="width:30%;"></div> </div></div>2.多彩进度条<div c…

微信小程序实现选项卡功能

微信小程序实现选项卡功能

选项卡,功能,程序,电脑软件,微信小,本文实例为大家分享了微信小程序选项卡功能展示的具体代码,供大家参考,具体内容如下首先看看微信小程序上的选项卡的效果:原理呢,就是先布局好(这就不必说了吧),然后在上面的每一个选项卡上都定义一个同样的点击…

Vue中使用vux的配置详解

Vue中使用vux的配置详解

配置详解,电脑软件,Vue,vux,Vue中使用vux的配置,分为两种情况:一、根据vux文档直接安装,无需手动配置npm install vue-cli -g // 如果还没安装vue init airyland/vux2 my-project // 创建名为 my-project 的模板cd my-project // 进入项目n…

Server.MapPath |  错误 ’ASP 017

Server.MapPath | 错误 ’ASP 017

字符,错误,不允许,电脑软件,MapPath,未启用父路径 症状举例: Server.MapPath() 错误 &rsquo;ASP 0175 : 80004005&rsquo; 不允许的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4 在 MapPath 的 Path 参数中不允…

win2003 IIS 500内部服务器错误(典

win2003 IIS 500内部服务器错误(典

数据库,服务器,错误,解决方案,典型,IIS正确设置步骤: 一、启用Asp支持 Windows Server 2003 默认安装,是不安装 IIS 6 的,需要另外安装。安装完 IIS 6,还需要单独开启对于 ASP 的支持。 第一步,启用Asp,进入:控制面板 -> 管理工具 ->IIS(Internet…

INdesign CS6怎么在A4的页面添加A3

INdesign CS6怎么在A4的页面添加A3

页面,尺寸,电脑软件,INdesign,INdesign CS6中想要在原有的文档里面添加一个别的尺寸的页面,该怎么设置页面尺寸呢?下面我们就来看看详细的教程。软件名称:Adobe InDesign CS6 中文免费版软件大小:878.42MB更新时间:2014-05-261、打开一个ID文档,…