ThinkPHP add方法 使用以后插入空数据
发布网友
发布时间:2022-04-22 10:34
我来回答
共3个回答
热心网友
时间:2022-04-07 08:10
添加数据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方法实例化数据模型。
热心网友
时间:2022-04-07 09:28
如果你的数据库各个字段的值都没设置非空,这样的sql是可以执行的。
热心网友
时间:2022-04-07 11:03
数据库表字段会区分大小写,将表字段改为小写,再删除缓存后,即可正常插入。
thinkphp里面的add方法为什么我插入错误的表字段还是可...
因为你的id是自增的,虽然没有数据,但是还是增加了一条记录
ThinkPHP3.2框架使用addAll()批量插入数据的方法
thinkphp中model类的addAll()方法可以将数据同时添加到数据库中.// 批量添加数据 (only MySQL)$user = M('user');//array('表字段'=>'值')$dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com');$dataList[] = array('name'=>'onethink','email'=>'onethink@...
thinkphp 我用其提供的add和save方法做插入和更新操作时,居然有默认...
应该是没有默认值的,看看是不是数据库中相应字段属性误操作为有默认值了。
thinkphp 我用create方法add()添加数据时返回false 给if判断返回false...
user = D('Users') ;if($user->create()) { $user->add();} else { $this->error($user->getError());}这样写试试
thinkphp3.2 自动填充不成功是怎么回事
create()ThinkPHP 自动验证与自动填充是在创建数据对象 create() 时实现的,因此自动验证与自动填充无效很大程度上与 create() 有关。create 方法语法如下:create(mixed data, string type)data 表示接受的数据,type 表示本次的具体操作(写入还是更新数据)。两个参数都可省略,data 参数省略的情况下...
thinkphp 怎么循环把图片插入数据库
// 上传文件 2. $fileElementName = "file";3. $filedata = file_get_contents($_FILES[$fileElementName]["tmp_name"]);4. if(empty($_FILES[$fileElementName]['tmp_name'])){ 5. $this->error('没有上传的文件!');6. return false;7. } 8. $Images =...
thinkphp中就是把一个表的数据插入到另一个结构一模一样的表里 如何使...
你可以试一下这个语句,将表2查询出来的结果插入到表1中。insert into 表1 select * from 表2;
thinkphp 数据库插入时重复插入
你在插入之前要先对数据进行一次过滤也就是逻辑上得唯一判断后再作入库处理,否则提示已存在不插入即可。
Thinkphp 怎么复制一条数据然后插入到当前表里
set = M("News")->where("catid = 6")->select();foreach ($set as $r){ aa[ziduan1]=$r['ziduan'];aa[ziduan2]=$r['ziduan'];aa[ziduan3]=$r['ziduan'];//所有字段都列出 M("News")->add($aa);} 如果只是一条数据可以这样写 set = M("News")->where("catid =...
thinkphp 二维数组怎么插入数据库
($data as $k => $v) { // 循环保存每一条值 map = array();map['k'] = $k; // 保存216 这个键名 map['a'] = $v['a'];map['b'] = $v['b'];map['c'] = $v['c'];map['d'] = $v['d'];M('')->table('table_name')->add($map);} ...