zoukankan      html  css  js  c++  java
  • 【三十四】thinkphp之curd操作

    1.数据创建(create)

    接受提交过来的数据,比如表单提交的 POST(默认)数据。接受到数据后,还可以对数据进行有效的验证、完成、生成等工作

         // 这里 create()方法就是数据创建,数据的结果就是提交的 POST 数据的键值对。
       // 特别注意的是:提交过来的字段和数据表字段是对应的,否则无法解析
         //根据表单提交的POST数据,创建数据
          var_dump($user->create());

    通过$_post接收数据

          //通过数组手工获取数据,覆盖提交的
          $data['name']='qqq';
          $data['password']="456";
          $data['email']="qqq@qq.com";
          $data['age']=52;
          var_dump($user->create($data));
          //通过对象手工获取数据,覆盖提交的
          $data=new stdClass();
          $data->name=$_POST['name'];
          $data->password=$_POST['password'];
          $data->email=$_POST['email'];
          $data->age=$_POST['age'];
          var_dump($user->create($data));
          // 默认是$_POST,传递$_GET修改
          var_dump($user->create($_GET));

    create()方法可以传递第二个参数,将要操作的模式,有两种:Model::MODEL_INSER和 Model::MODEL _UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包含主键来自动判断,如果包含主键,则就是修改

    操作

          // 设置将要新增操作
          var_dump($user->create($_POST,Model::MODEL_INSERT));

          //限制可操作的字段
          // 提交过来的数据只会接收name字段的值
          var_dump($user->field('name')->create());

    2.数据写入(add)

    数据写入使用的是 add()方法。

         //新增一条数据
          // sql:INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES ('caiminfang','123','caiminfang@qq.com',15)
          $user=M('user1');
          $data['name']='caiminfang';
          $data['password']="123";
          $data['email']="caiminfang@qq.com";
          $data['age']=15;
          $user->add($data);
          // 结合create()方法
          // INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES ('cmfcmf','456','cmf@qq.com',18)
        $data $user->create();
    $data['name']=$_POST['name']; $data['password']=$_POST['password']; $data['email']=$_POST['email']; $data['age']=$_POST['age']; $user->add($data);

     

          //INSERT INTO `user1` (`name`) VALUES ('asdasd')
          //使用data连贯操作
          $user=M('user1');
          $data=$user->create();
          $data['name']='asdasd';
          var_dump($user->data($data)->add());
    
          // data连贯方法,支持字符串、数组、对象
          // INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES ('xingshi','123','xingshi@qq.com',55)
          $data='name=xingshi&password=123&email=xingshi@qq.com&age=55';
          $user->data($data)->add();

     3.数据读取(select)

    支持连贯方法的有:http://www.cnblogs.com/8013-cmf/p/8317720.html(请阅读此篇文章)

    field和getField的区别:

    1.  field():用于定义要查询的字段
    2. getField():用于查询某个字段的值
          $user=M('user1');
          //显示所有数据
          // SELECT * FROM `user1`
          var_dump($user->select());
    
          //显示默认第一条数据
          // SELECT * FROM `user1` LIMIT 1
          var_dump($user->find());
    
          // 获取第一条name字段的值
          // SELECT `name` FROM `user1` LIMIT 1 
          var_dump($user->getField('name'));
    
          // 获取所有user字段的name值
          // SELECT `name` FROM `user1` 
          var_dump($user->getField('name',true));
    
          //获取所有user的name值和email值
          // SELECT `name`,`email` FROM `user1`
          var_dump($user->getField('name,email'));
    
          //以冒号分隔
          // SELECT `name`,`email`,`age` FROM `user1`
          var_dump($user->getField('name,email,age',":"));
    
          //限制2条数据
          //SELECT `name`,`email` FROM `user1` LIMIT 2 
          var_dump($user->getField('name,email',2));

    4.数据更新(save) 

     主要是对数据的修改操作。

          $user=M('user1');
          //修改数据
          // UPDATE `user1` SET `name`='zxczxc' WHERE `id` = 4
          $data['name']="zxczxc";
          $map['id']=4;
          $user->where($map)->save($data);
    
          //默认主键为条件
          // UPDATE `user1` SET `name`='hello' WHERE `id` = 3
          $data['id']=3;
          $data['name']="hello";
          $user->save($data);

     

    结合create使用save

    index.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    <form method="post" action="http://localhost/basic_thinkphp/index.php/Home/Model/save">
    <!-- 必须要定义id的默认值 -->
        <input type="hidden" name="id" value="3">
        用户名:<input type="text" name="name"><br/>
        密码:<input type="text" name="password"><br/>
        邮箱:<input type="text" name="email"><br/>
        年龄:<input type="text" name="age"><br/>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>

     ModelController.class.php

    <?php
    namespace HomeController;
    use ThinkController;
    use ThinkModel;
    use ThinkstdClass;
    class ModelController extends Controller {
        public function save(){
          $user=M('user1');
          // 结合create
          // UPDATE `user1` SET `name`='test1',`password`='456',`email`='a@qq.com',`age`=88 WHERE `id` = 3
          $user->create();    //post必须包含主键,我是在前端定义的
          $user->save();
    }
    }
          $user=M('user1');
          // 修改某一个值
          // UPDATE `user1` SET `name`='labixiaoxin' WHERE `id` = 3
          $map['id']=3;
          $user->where($map)->setField('name','labixiaoxin');
    
          //统计累计,累加累减
          // UPDATE `user1` SET `age`=age+1 WHERE `id` = 3
          $map['id']=3;
          $user->where($map)->setInc('age',1);

     5.数据删除(delete)

        $user=M('user1');
        // 直接删除主键(id=8)
        // DELETE FROM `user1` WHERE `id` = 8
        $user->delete(8);
    
        //根据id删除
        // DELETE FROM `user1` WHERE `id` = 47
        $map['id']=47;
        $user->where($map)->delete();
    
        //批量删除多个
        // DELETE FROM `user1` WHERE `id` IN ('45','46') 
        $user->delete("45,46");
    
        //删除年龄为16且按照id倒序的前2个
        // DELETE FROM `user1` WHERE `age` = 16 ORDER BY `id` DESC LIMIT 2
        $map['age']=16;
        $user->where($map)->order(array('id'=>'DESC'))->limit(2)->delete();
    
        // 删除所有数据
        echo $user->where('1')->delete();

     

    6.ActiveReocrd 模式

    这种模式最大的特别就是简化了 CURD 的操作,并且采用对象化的操作方式,便于使用和理解。

        // 添加一条数据
        $user = M('User');
        $user->user = '火影忍者';
        $user->email = 'huoyin@qq.com';
        $user->date = date('Y-m-d H:i:s');
        $user->add();
    
        //结合create
        $user = M('User');
        $user->create();
        $user->date = date('Y-m-d H:i:s');
        $user->add();
    
        //找到主键为4的值
        $user = M('User');
        var_dump($user->find(4))
    
        //查找user=蜡笔小新的记录
        $user = M('User');
        var_dump($user->getByUser('蜡笔小新'));
    
        //输出userecho 
        $user->user;
        //通过主键查询多个
        $user = M('User');
        var_dump($user->select('1,2,3'));
        //修改一条数据
        $user = M('User');
        $user->find(1);
        $user->user = '蜡笔老新';
        $user->save();
    
        //删除当前找到的数据
        $user = M('User');
        $user->find(11);
        $user->delete();
    
        //删除主键为10的数据
        $user = M('User');
        $user->delete(10);
    
        //删除主键为10,11的数据
        $user = M('User');
        $user->delete('10,11'
  • 相关阅读:
    开源搜索引擎Solr的快速搭建及集成到企业门户最佳实施方案--转载
    Java开发WebService的几种方法--转载
    HBase Java简单示例--转载
    Eclipse快捷键大全--转载
    Java中List、Set和Map的区别--转载
    ArrayList和Iterator的用法
    日期格式化
    java中的值传递和引用传递问题
    Servlet,过滤器,监听器,拦截器的区别
    Java过滤器与SpringMVC拦截器之间的关系与区别
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/8321360.html
Copyright © 2011-2022 走看看