三十四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的区别:
- field():用于定义要查询的字段
- 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操作的主要内容,如果未能解决你的问题,请参考以下文章