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

来源:互联网 发布:开放源代码的软件 编辑:程序博客网 时间:2024/06/05 15:54

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

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

  • 数据表操作包括(增加、删除、修改、查询),即大家常说的:增删改,英文缩写:CURD。
  • 操作语句主要有4个,他们的语法和说明:
序号名称关键字语法举例1新增INSERTINSERT 表名 (字段列表) VALUES (值列表)INSERT staff (name,salary) VALUES ('周军',4500);2删除DELETEDELETE FROM 表名 WHERE 条件DELETE FROM staff WHERE id = 1005;3更新UPDATEUPDATE 表名 SET 字段 = 新值 WHERE 条件UPDATE staff SET salary = salary + 200 WHERE id = 1005;4查询SELECTSELECT 字段列表 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 控制器代码如下:
<?phpnamespace 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 '<h2>您已成功的执行了该语句</h2>'; }}
  • 运行结果如下:


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

  • 经过改进后的Index.php控制器代码如下:
<?phpnamespace 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 '<h2>您已成功的执行了该语句</h2>'; }}
  • 运行效果与第一方式完全一样,这里不再截图演示了。

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

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

  • Index.php控制器代码如下:
<?phpnamespace 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 '<h2>您已成功的执行了该语句</h2>'; }}
  • 运行效果如下:


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

  • Index.php 控制器类代码:
<?phpnamespace 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 '<h2>您已成功的执行了该语句</h2>'; }}
  • 运行结果:


引用:https://www.kancloud.cn/ldkt/tp5_db/226599

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信上聊天被外国人给骗了该怎么办 微信冒充朋友骗走我钱怎么办 凉皮调料水鸡精味精放多了怎么办 吃了地屈孕酮后月经不干不净怎么办 藕片用热水炒后变色了怎么办? 外汇延期收款忘了报告了怎么办 怀孕不小心吃了马生菜怎么办 高压锅的皮圈很容易坏是怎么办 华为应用市场账号密码忘记了怎么办 业主对我们提出批评意见时怎么办 向环保局投诉被公司发现了怎么办 在政务大厅上班被群众投诉怎么办 政府下发的文件通知不履行该怎么办 给私人老板开车不给工资怎么办 给个体老板开车不给工资怎么办 户口转走在人才市场的档案怎么办 外来媳妇转上海户口没有档案怎么办 公务员考试笔试差9分面试怎么办 想从事人事方面的工作没经验怎么办 教师资格考试后户籍转走认定怎么办 总经理离职了作为高管的我怎么办 企业换总经理想换供应商应该怎么办 换了晶振时间还快怎么办 职场两个人都想要你的情况下怎么办 造价起步工资太低又结婚了怎么办 3d保存时写入文件出错怎么办 无经验想在工地承包点小活怎么办 一级建造师挂靠后中标后怎么办 用360对系统修补漏洞很慢怎么办 如果美国和俄罗斯开战中国会怎么办 戴牙冠前临时补牙材料掉了怎么办 设备间在业主家里每次上锁怎么办 成都安全员证原件丢了并过期怎么办 记不施工员证书号了怎么办 优易学车学员版登录不了怎么办 先科移动dvd主板坏了怎么办 离职单位不出劳动解除书怎么办 离职后一级建造师注册证怎么办 京牌货车报废挂靠公司不给办怎么办 二建挂靠注册证书到期了怎么办 二建证书挂靠公司不给钱怎么办