ThinkPHP5——数据库操作(传统方法)

资源控制器的创建

使用dos命令,生成资源控制器:

  1. 先找到项目目录(即网站目录)
  2. dos命令切换到当前目录,输入:php think make:controller app\index\controller\Users  
  3. 注:最后一个是资源控制器的名称

编写资源路由(app\route.php)

  1. 注释原有代码
  2. 导入资源路由类:use think\Route;
  3. 写对应控制器的资源路由Route::resource('users','index/Users');
  4. 注:在User控制器下的方法对应的View界面,引入文件除了index()方法与static文件同级,其他方法相应的View界面引入文件时(即写相对路径时),都需要跳相应的级(例如:../  ../../  否则会报错!模块不存在!)。

数据库增删改查(User.php,注意导入Db类 即use think\Db;)

查询

  1. 查询,对应着index()方法
  2. 先进行查询操作

        $data = Db::query("select * from user");

     3. 调用assign将结果集分配给数组

        $this->assign("data", $data);

     4. 加载页面

        return view();

      5. 对应app\index\controller目录下新建view文件夹,view目录下新建users文件夹, users目录下新建index.html,编写界面代码。

            {volist name="data" id="value" }

            <tr>

              <td>{$value.id}</td>

              <td>{$value.name}</td>

              <td>{$value.pass}</td>

              <td>{$value.age}</td>

              <td><a href="/users/{$value.id}/edit">修改</a></td>

              <td>

                <form class="" action="/users/{$value.id}" method="post">

                  <input type="hidden" name="_method" value="delete">

                  <button>删除</button>

                </form>

              </td>

     注:以上只是部分代码

     关键点:是用volist传入$data数组,并用value进行标识,在表格中迭代输出。

插入

  1.  在app\index\controller\view\users\目录下新建create.html,编写界面代码。

<form class="" action="/users" method="post">

            <!--表单中文本框的name属性一定要和数据库中的列名相对应  -->

          <div class="form-group">

              <label for="">User</label>

              <input type="text" name="name" class="form-control" placeholder="请输入用户名">

          </div>

          <div class="form-group">

              <label for="">Pass</label>

              <input type="paaword" name="pass" class="form-control" placeholder="请输入密码">

          </div>

          <div class="form-group">

              <label for="">Age</label>

              <input type="number" name="age" class="form-control" placeholder="请输入年龄">

          </div>

          <div class="form-group">

            <input type="submit" class="btn-success" name="" value="提交">

            <input type="reset" class="btn-danger" name="" value="重置">

          </div>

          </form>

          </table>

注意:每种标识对应的请求类型,相应的生成路由规则就不同(指form表单中的action值),且每种操作的请求类型不同,需要通过模拟相应的请求,即文中相应.html代码中的隐藏域。

2.  在对应的Users.php中的save()方法中编写代码。

        //接收post请求过来的所有数据

        $data  = input("post.");

        //执行数据库插入

        $res = Db::execute("insert into user value(null, :name, :pass, :age)", $data);

        if($data){

          //跳转

          $this->success("添加成功", '/users');

        }

        else{

          $this->error("添加失败", '/user/create');

        }

 更新

  1.  先编写Users.php中的edit()方法,对index.html中传的id值进行查询。

      //从数据库中查询比修改的数据

        $data = DB::query("select * from user where id = ?", [$id]);

        // dump($data);

        //分配数据

        $this->assign("data", $data[0]);

        //加载页面

        return view();

2.  在app\index\controller\view\users\目录下新建edit.html,编写界面代码。

     <form class="" action="/users/{$data.id}" method="post">

             <!--表单中文本框的name属性一定要和数据库中的列名相对应  -->

              <div class="form-group">

                <input type="hidden" name="_method" value="PUT">

                  <label for="">User</label>

                  <input type="text" name="name" value="{$data.name}" class="form-control" placeholder="请输入用户名">

              </div>

              <div class="form-group">

                  <label for="">Pass</label>

                  <input type="text" name="pass" value="{$data.pass}" class="form-control" placeholder="请输入密码">

              </div>

              <div class="form-group">

                  <label for="">Age</label>

                  <input type="text" name="age" value="{$data.age}" class="form-control" placeholder="请输入年龄">

              </div>

              <div class="form-group">

                <input type="submit" class="btn-success" name="" value="提交">

                <input type="submit" class="btn-danger" name="" value="重置">

              </div>

      </form>

注:此处的数据仍然是从edit()方法中的$data数组的第一个元素,且此处的form表单的action值为/users/{$data.id}(注:查表可以看到,这个是用的是update的路由规则,与更新相对应)

3.  在相应的Users.php控制器下update()方法中编写代码。

        //接收数据

        //接收除了_method之外的数据

        $data = $request::instance()->except('_method');

        // dump($data);

        // 执行数据库更新操作

        $db = Db::execute("update user set name=:name, pass=:pass, age=:age where       id=:id", $data);

        if($db){

          $this->success("数据更新成功", '/users')  ;

        }else {

          $this->error("数据更新失败");

        }

猜你喜欢

转载自blog.csdn.net/qq_42049445/article/details/85370190