ThinkPHP Insert添加数据add方法

添加数据add方法是CURD(Create,Update,Read,Delete / 创建,修改,读取,删除)中的 Create的实现,ThinkPHP 支持以普通数组方式和面向对象方式将数据写入数据表。

       现在以操作 user 表数据的例子为例,来演示如何在 ThinkPHP 中实现对数据表的数据添加操作。

数组方式添加数据

例子: 在 IndexAction 控制器(Lib/Action/IndexAction.class.php),添加 insert() 操作:

public function insert(){

       header("Content-Type:text/html; charset=utf-8");

       $Dao = M("User"); // 实例化模型类

    // 构建写入的数据数组

    $data["username"] = "休假";

    $data["password"] = md5("123456");

    $data["email"] = "123456@163.com";

    $data["regdate"] = time();

    // 写入数据

    if($lastInsId = $Dao->add($data)){

        echo "插入数据 id 为:$lastInsId";

    } else {

        $this->error('数据写入错误!');

    }

}

语法解读

M("User") 用于高效实例化一个数据模型(M 是 new Model 的简写,称为快捷方法),参数为要操作的表名。

接下来构建要保存数据的数组 $data 。

最后是用 add() 方法将数据写入库表,由于使用的是 M快捷方法,需要将 $data 数组传入 add() 方法。

add() 方法如果添加数据记录成功,返回的是新数据记录主键,可直接得到。

该例子实际运行的 SQL 为:

INSERT INTO user(username,password,email,regdate) VALUES ('休假','e10adc3949ba59abbe56e057f20f883e',

123456@163.com',1283612673)

对象方式添加数据

       上面的方式是以构造数据数组的方式,将数据以参数形式传入add方法写入数据表。ThinkPHP 也支持以对象的方式将数据写入数据表,将上面的代码更改为:

public function insert(){

    header("Content-Type:text/html; charset=utf-8");

    $Dao = M("User"); // 实例化模型类

    // 数据对象赋值

    $Dao->username = "休假";

    $Dao->password = md5("123456");

    $Dao->email = "123456@163.com";

    $Dao->regdate = time();

    // 写入数据

    if($lastInsId = $Dao->add()){

        echo "插入数据 id 为:$lastInsId";

    } else {

        $this->error('数据写入错误!');

    }

}

对象方式的数据以数据对象方式赋值,调用 add 方法写入数据时不需要传递参数。

表单数据智能写入create 方法

       除了手动构造入库的数据集之外,ThinkPHP 还提供了自动创建数据对象的 create() 方法。create() 方法将自动收集提交的表单数据并创建数据对象而无需人工干预,这在表单数据字段非常多的情况下更具优势。

将前文写入表单数据的例子用 create() 来实现:

public function insert2(){

       header("Content-Type:text/html; charset=utf-8");

       $Dao = M("User");

       if($Dao->create()){

              $Dao->password = md5($_POST["password"]);

              $Dao->regdate = time();

              if($lastInsId = $Dao->add()){

                     echo "插入数据 id 为:$lastInsId";

              } else {

                     echo "数据写入错误!";

              }

       }else{

              exit($Dao->getError().' [ <a href="javascript:history.back()">返 回</a> ]');

       }

}

create() 创建数据对象后,将自动收集提交过来的表单数据。而表单数据可能需要经过一定加工(例如将密码加密)才能写入数据表,所以可以对数据对象的成员属性值根据进行修改或添加删除等。

提示:create() 创建的数据对象存放于内存,在执行入库动作(add() 或 save())之前,都可以进行修改。

在上面的例子里,create()方法 的行为和 date()方法 是一致。但 date() 方法只是简单的创建数据对象,但 create() 方法还具备:

令牌验证

数据自动验证

字段映射支持

字段类型检查

数据自动完成

等各种高级的数据功能,要完成这些高级数据模型功能,需要使用 D方法实例化数据模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值