本文实例讲述了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程序设计有所帮助。

thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法相关推荐

  1. ef执行原生sql语句_EF Core中执行原生SQL语句

    一.课程介绍之所以今天录制这个系列文章的主要原因是,想在快速帮助到大家上手在ASP.NET Core WebAPI中结合EF Core来操作我们的数据库.EF Core的基础文章和基础课程实在是太多了 ...

  2. php 原生sql 分页查询,Laravel框架执行原生SQL语句及使用paginate分页的方法

    本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法.分享给大家供大家参考,具体如下: 1.运行原生sql public function getList($data){ ...

  3. 2016/05/13 thinkphp 3.2.2 ① 数据删除及执行原生sql语句 ②表单验证

    [数据删除及执行原生sql语句] delete()  返回受影响的记录条数 $goods -> delete(30);   删除主键值等于30的记录信息 $goods -> delete( ...

  4. php执行删除语句代码,ThinkPHP之数据删除和执行原生SQL语句

    一.数据删除 delete() 返回受影响的记录条数 $goods->delete(30);//删除主键值等于30的记录信息 $goods->delete('10,12,14');//删除 ...

  5. jpa原生query_JPA执行原生SQL语句

    前言 作业的项目终于告一段落了暂时,这周继续进行日志系统的编写,只可惜这周开始练科三了,一开始是全天练车,导致每天写代码的时间减少了好多,后来时间进行了调整(早上四点半到七点半,晚上五点到七点多),也 ...

  6. EFCore之执行原生SQL语句

    EFCore通过 LINQ 语法为我们提供了非常便利的方式来操作数据库. 当有些业务逻辑较复杂而不能使用 LINQ 来查询时,可以使用原生 SQL 查询. 或者使用 LINQ 查询导致 SQL 查询效 ...

  7. django执行原生SQL语句

    1.原生SQL用法概述 django可以执行原生SQL语句,主要分读和写两类,用法如下: 读(查):xxxModel.object.raw() 写(增删改):connection.cursor() 2 ...

  8. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  9. PlSqlDev中执行INSERT SQL语句包含符号导致数据异常

    PlSqlDev中执行INSERT SQL语句包含&符号导致数据异常 参考文章: (1)PlSqlDev中执行INSERT SQL语句包含&符号导致数据异常 (2)https://ww ...

最新文章

  1. C3P0_and_pro.properties配置文档代码
  2. 《LeetCode力扣练习》第9题 C语言版 (做出来就行,别问我效率。。。。)
  3. 【转载】笛卡尔转极坐标
  4. 第九章 硬件抽象层:HAL
  5. 【人工智能作业及答案】什么叫智能?什么叫人工智能?人工智能科学体系大致分哪几个层次?
  6. html_5_小作业2_世纪佳缘注册页面
  7. My Appointment - Belonging to me, Search by team, Search by group
  8. el-popover超过固定高度后出现滚动条_「测绘精选」RTK测量不出现固定解的原因...
  9. 实现userdetails_Spring Security使用Hibernate实现自定义UserDetails
  10. 一道面试题--两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
  11. 常用模块(json/pickle/shelve/XML)
  12. Maven项目有红叉,文件却没有错误,已解决
  13. leg引擎适合什么系统的服务器,第一讲 LEG引擎服务端更新BLUE引擎
  14. Java微信支付APIV3密钥生成全过程
  15. 【摘记】彼得·林奇的成功投资
  16. python pip是什么的简写_Python包管理器pip
  17. python怎么画卡通人物_Python绘制可爱的卡通人物 | 【turtle使用】
  18. 钢丝流-BISU的战斗哲学
  19. 行业了解——挂耳咖啡
  20. citrix应用程序虚拟化_在Citrix环境中部署和更新Microsoft Access应用程序

热门文章

  1. WCF - Versus Web Service
  2. 一个PHP程序的“怪问题”
  3. 软件需求说明书文档格式
  4. 神经网络迭代次数的线性累加现象
  5. 【Matlab 图像】同时显示两个视频
  6. 8.3 算法流程与评估-机器学习笔记-斯坦福吴恩达教授
  7. 1.4 正规方程-机器学习笔记-斯坦福吴恩达教授
  8. 1.2 离散时间信号-采样
  9. 类和对象—对象特性—空指针访问成员函数
  10. lua编程简单实用入门教程,用NodeMCU在OLED上显示温湿度