ThinkPHPInsert添加数据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";
$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',1283612673)
对象⽅式添加数据
上⾯的⽅式是以构造数据数组的⽅式,将数据以参数形式传⼊add⽅法写⼊数据表。ThinkPHP 也⽀持以对象的⽅式将数据写⼊数据表,将上⾯的代码更改为:
public function insert(){
header("Content-Type:text/html; charset=utf-8");
$Dao = M("User"); // 实例化模型类
// 数据对象赋值
$Dao->username = "休假";
$Dao->password = md5("123456");
thinkphp3$Dao->email = "123456@163";
$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⽅法实例化数据模型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论