您的位置:首页 > 编程语言 > PHP开发

【三十四】thinkphp之curd操作

2018-01-20 17:38 411 查看

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():用于定义要查询的字段

[b]getField():用于查询某个字段的值[/b]

$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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: