原生SQL: 写操作(execute方法)

一、TP5原生写操作是通过Query类的execute()方法来实现

学习之前,先简单回顾了写操作常识:

数据表操作包括(增加、删除、修改、查询),即大家常说的:增删改,英文缩写:CURD。

操作语句主要有4个,他们的语法和说明:

序号

名称

关键字

语法

举例

1

新增

INSERT

INSERT 表名 (字段列表) VALUES (值列表)

INSERT staff (name,salary) VALUES ('周军',4500);

2

删除

DELETE

DELETE FROM 表名 WHERE 条件

DELETE FROM staff WHERE id = 1005;

3

更新

UPDATE

UPDATE 表名 SET 字段 = 新值 WHERE 条件

UPDATE staff SET salary = salary + 200 WHERE id = 1005;

4

查询

SELECT

SELECT 字段列表 FROM 表名 WHERE 条件

SELECT name,salary FROM staff WHERE id > 1005;

前三个是写操作(即执行后,表中记录发生了变化)

现在回到TP 5

execute()方法定义在:db/Query.php 类文件中

该方法功能是:执行写操作,参数有2个:

执行写操作的SQL语句字符串:$sql;

用数组方式绑定的参数:$bind。

2、Db类直接静态调用execute()方法

静态调用方式(大家先熟悉这种方式)

关于静态调用和SQL语句生成的的基本知识,我们在上一节读操作有详细介绍,这里不再重复。

实例1:在tp5_staff表中添加新员工

目前数据表tp5_staff记录如下:

Index.php 控制器代码如下:

namespace app\index\controller;

use think\Controller;

use think\Db;

class Index extends Controller {

public function index(){

//创建SQL语句字符串

$sql = "INSERT tp5_staff (name,sex,age,salary,dept,hiredate) VALUES ('李云龙',1,39,4800,'开发部','2011-09-12');";

//执行插入操作

$affected = Db::execute($sql);

//判断是否执行成功

if ($affected){

$this->success('插入成功!',url('ok'));

}else{

$this->error('插入失败');

}

}

//定义操作成功的方法

public function ok(){

echo '

您已成功的执行了该语句

';

}

}

运行结果如下:

为防止SQL注入,推荐用命名占位符传参方式构造SQL语句

经过改进后的Index.php控制器代码如下:

namespace app\index\controller;

use think\Controller;

use think\Db;

class Index extends Controller {

public function index(){

//创建SQL语句字符串

$sql = "INSERT tp5_staff (name,sex,age,salary,dept,hiredate) VALUES (:name,:sex,:age,:salary,:dept,:hiredate);";

//执行插入操作

$affected = Db::execute($sql,['name'=>'李云龙','sex'=>1,'age'=>30,'salary'=>4800,'dept'=>'开发部','hiredate'=>'2011-09-12']);

//判断是否执行成功

if ($affected){

$this->success('插入成功!',url('ok'),10);

}else{

$this->error('插入失败');

}

}

//定义操作成功的方法

public function ok(){

echo '

您已成功的执行了该语句

';

}

}

运行效果与第一方式完全一样,这里不再截图演示了。

下面语句全部采用:命名点位符绑定参数方式

实例2:删除tp5_staff表中id大于1012的记录

Index.php控制器代码如下:

namespace app\index\controller;

use think\Controller;

use think\Db;

class Index extends Controller {

public function index(){

//创建SQL语句字符串

$sql = "DELETE FROM tp5_staff WHERE id > :id;";

//执行插入操作

$affected = Db::execute($sql,['id'=>'1012']);

//判断是否执行成功

if ($affected){

//延时10秒,是为了方便截图,默认为3秒

$this->success('删除成功!',url('ok'),'',10);

}else{

$this->error('删除失败');

}

}

//定义操作成功的方法

public function ok(){

echo '

您已成功的执行了该语句

';

}

}

运行效果如下:

实例3:更新id = 1012的记录,将姓名改为:楚云飞,部门改为市场部

Index.php 控制器类代码:

namespace app\index\controller;

use think\Controller;

use think\Db;

class Index extends Controller {

public function index(){

//创建SQL语句字符串

$sql = "UPDATE tp5_staff SET name = :name , dept = :dept WHERE id = :id;";

//执行插入操作

$affected = Db::execute($sql,['name'=>'楚云飞','dept'=>'市场部','id'=>'1012']);

//判断是否执行成功

if ($affected){

$this->success('更新成功!',url('ok'),'',10);

}else{

$this->error('更新失败');

}

}

//定义操作成功的方法

public function ok(){

echo '

您已成功的执行了该语句

';

}

}

运行结果:

请同学们课后,将所有代码亲自上机调试,不要简单的复制粘贴。

php中execute的用法,写操作execute相关推荐

  1. oraclesqldeveloper 批量插入多个存储过程_MongoDB如何批量执行写操作

    MongoDB Manual (Version 4.2)> MongoDB CRUD Operations > Bulk Write Operations No 1 总览 MongoDB使 ...

  2. matlab在axis,matlab中axis的用法

    >> axis([0 2*pi -0.9 0.9]) 图 5.1.3 使用了图形修饰的 plot 函数绘制的正弦曲线 5.1.3 图形的比较显示 在一般默认的情况下,MATLAB 每次使用 ...

  3. python中cursor的用法_python MySQLdb用法,python中cursor操作数据库(转)

    数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...

  4. ORACLE EXECUTE IMMEDIATE 用法

    先转载过来看,再整理吧~~~ ORACLE EXECUTE IMMEDIATE 用法 EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包. 它解析并马上 ...

  5. conn.execute的用法

    <script src="/a_dir_d/title_bottom.js"></script> http://tech.ddvip.com   2008年 ...

  6. EXECUTE IMMEDIATE用法小解

    http://www.cnblogs.com/goodbye305/archive/2008/06/23/1228073.html EXECUTE IMMEDIATE 代替了以前Oracle8i中DB ...

  7. oracle execute immediate用法

    参考:https://zhidao.baidu.com/question/119144004.html在ORACLE的PL/SQL里 EXECUTE IMMEDIATE 代替了以前Oracle8i中D ...

  8. 【pytest】概述pytest——setup、teardown方法和conftest中的fixture用法,来执行测试用例的前置/后置条件语句操作

    大家好,我是好学的小师弟.今天和大家分享下-在pytest中的前置/后置操作. 所谓的前置/后置操作,就是在测试用例执行前,你预先要执行的一些步骤:在测试用例执行完毕后,你要执行的一些数据清理/备份工 ...

  9. mysql+影响的行数+获取_CI中获取读操作的结果集行数+获取写操作的影响行数

    本质:读操作,用mysql_num_rows函数,写操作用mysql_affected_rows函数 mysql_num_rows() 返回结果集中行的数目.此命令仅对 SELECT 语句有效.要取得 ...

  10. jsp中用java写标签id_jsp中自定义标签用法实例分析

    本文实例讲述了jsp中自定义标签用法.分享给大家供大家参考.具体如下: 这里简单的写了一个自定义标签,自己定义标签的好处就是在jsp页面中可以使用自己定义的功能,完全与Java代码分离 1. tld文 ...

最新文章

  1. python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...
  2. TPU 3.0,Android P...Google带来了哪些惊喜?
  3. PAT Basic 1069. 微博转发抽奖(20)
  4. [转]Webkit内核探究【2】——Webkit CSS实现
  5. 【转】使用Apache CXF开发WebServices服务端
  6. 《实时控制软件开发》学生四次作业成绩总排名
  7. 【Alertmanager】腾讯企业邮箱配置
  8. SpringBoot项目的静态资源的访问及存放
  9. Thinkpad Access Connections实现快速的在各种网络间进行切换
  10. 解决idea中找不到程序包和找不到符号的问题
  11. IE FF css兼容
  12. Flowable入门系列文章187 - 高并发性的UUID ID生成器和多租户
  13. MYSQL 使用case when 完成对业务枚举的查询出参
  14. ultraISO方式制作win10安装U盘
  15. 夺命故障!炸出了投资人!
  16. 剑指offer--46.47.发散思维能力
  17. 【操作系统】—I/O设备的基本概念和分类
  18. 代码埋点、可视化埋点、无埋点几种数据埋点方案的分析报告
  19. http文件上传到web服务器,上传到ftp服务器
  20. cover letter and response letter

热门文章

  1. QT mindmap
  2. 1G、2G、3G、4G和5G有什么区别?5G的原理是什么?
  3. 植物墙,室内装饰的新创意
  4. SolidWork 制作KUKAKR6R700机器人URDF模型
  5. go每日新闻--2021-01-16
  6. 中台战略:企业数字化转型利器
  7. l2tp 账户管理系统
  8. android 解决usb网络共享,wifi热点能连不能用,手机wifi网络通过USB共享给电脑?
  9. java 百度网盘上传_[Java教程]使用pcs api往免费的百度网盘上传下载文件
  10. Egyptian Miracle Technical Service Support