老莫的笔记本  
  
查看: 968|回复: 0

TP5 数据库的原生查询实现原理 调用Connection类

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-8-12 09:20:05 | 显示全部楼层 |阅读模式
原生查询的实现-》调用 Connection 类;
Connection 类的数据库原生操作的使用
1.  query(sql语句字符串,[参数绑定]) : 读操作 ------>select
2.  execute(sql语句字符串,[参数绑定]): 写操作------> insert update delete

备注【Connection类 实例通过入口类Db 静态自动调用,不用显示写出来】  终于可以贴代码了 憋死哥了
  1. <?php
  2. namespace app\articles\controller;
  3. use think\Db;  
  4. // 这里研究数据库的原生查询
  5. // 昨天是如何创建数据库与连接数据库
  6. class Dby               
  7. {
  8.     public function mv1()
  9.     {
  10.         // 其实就是代表DB类可以直接调用所有的查询方法
  11.         // $a = Db::table('staff')->select();
  12.         // dump($a);
  13.          
  14.         
  15.         // 第一步:写出查询语句
  16.         // $a = 'SELECT name,age,id,gongzi FROM staff WHERE gongzi<4000        // // 第二步:调用 query 方法
  17.         // $req = Db::query($a);
  18.         // // 改写上述数组,防止sql 注入  [这是用问好绑定的方式]
  19.         // $sql = 'SELECT name,age,juese FROM staff WHERE gongzi<?        // // 第一个参数与第一个 ? 对应  该参数是个数组
  20.         // $req = Db::query($sql,[3000]);
  21.         // 命名占位符防止 sql 注入  [ 尽量用这种方式 ]
  22.         $sql ='SELECT name,age,juese FROM staff WHERE gongzi< :lma        $req = Db::query($sql,['lma'=>5000,]);
  23.         dump($req);
  24.     }
  25.     public function mv2()
  26.     {
  27.         return '进来了    }
  28.     public function mv3()
  29.     {
  30.         // 更新操作 将id= 2 的 工资增加2万
  31.         // $sql = 'UPDATE staff SET gongzi = gongzi + 20000 WHERE id=2        // // $req = Db::query($sql);  这里不用这个  而是用execute()
  32.         // $req = Db::execute($sql);
  33.         
  34.         // 防SQL注入的 命名占位符 参数绑定方法
  35.         $sql = 'UPDATE staff SET gongzi = gongzi + 20 WHERE id= :id        // $req = Db::query($sql);  这里不用这个  而是用execute()
  36.         $req = Db::execute($sql,['id'=>3]);
  37.         dump($req);
  38.         // 返回的结果是 int(1); 代指 受影响的记录条数 是一条
  39.     }
  40.     public function mv4()
  41.     {
  42.         // 插入操作,新增数据
  43.         $sql = 'INSERT INTO staff (name,juese,gongzi) VALUES (:name,:juese,:gongzi)        $req = Db::execute($sql,['name'=>'小强','juese'=>'技术主管','gongzi'=>'6900']);
  44.         dump($req);
  45.     }
  46.     public function mv6()
  47.     {
  48.         // 删除操作
  49.         $sql = 'DELETE FROM staff WHERE id=:id        $req = Db::execute($sql,['id'=>5]);
  50.          dump($req);
  51.     }
  52.     // 容我尝试下变量  [不知道是不是这样操作的 但是这样操作是可行的]
  53.     // http://localhost/public/index.php/articles/dby/mv5/name/%E9%82%B5%E5%B7%A5/juese/%E7%A0%94%E5%8F%91%E7%BB%8F%E7%90%86/gongzi/46565
  54.      public function mv5($name,$juese,$gongzi)
  55.     {
  56.         // 插入操作,新增数据
  57.         $sql = 'INSERT INTO staff (name,juese,gongzi) VALUES (:name,:juese,:gongzi)        $req = Db::execute($sql,['name'=>$name,'juese'=>$juese,'gongzi'=>$gongzi]);
  58.         dump($req);
  59.     }
  60. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表