三十四thinkphp之curd操作

Posted 花花妹子最努力~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三十四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 Home\\Controller;
use Think\\Controller;
use Think\\Model;
use Think\\stdClass;
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\'

以上是关于三十四thinkphp之curd操作的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP CURD操作

打怪升级之小白的大数据之旅(三十四)<JDBC的数据库连接与基本操作>

Thinkphp官网最新视频教程

爪哇国新游记之三十四----Dom4j的XPath操作

三十五thinkphp之视图

掌握Thinkphp3.2.0----CURD