令牌的使用方法 create,form表单中药指定method='post',不然create方法会报错的
例如
<form action="__URL__/add">
<input type="test" name="username">
<input type="submit" name="提交">
</form>
在IndexAction.class.php当中
function add() {
$user = new Model('user');
if($user->create) {
$this->success('create成功');
} else {
$this->error('失败');
}
}
我们可以在官网下载一个success.html页面,根据自己需求修改一下,也可以直接使用,这样就会出现成功或者失败的页面啦
关闭令牌的方法
在config.php中 添加数据元素
'TOKEN'=>FALSE,
对数据库的增删查改
$user = M('user');
//find();查找一条记录
//select();列出该表的所有记录
//findAll();与select类似
对数据库中查询或者操作添加特定条件 例如where limit order by
$user = M('user');
$user->where(id > 3)->select(); //顺序可变
$user->where(id > 1)->order('id desc')->limit('2')->select();
它等价于
$user->select(array('where'=>'id > 1','order'=>'id desc','limit'=>'2'));
这样是查询默认的表中所有的字段,如果我们想要查找特定的几个字段可以这样、
$user->where(id > 1)->order('id desc')->limit('2')->field('id,username')->select();//切记select()的顺序一定是方在最后面,不可改变他的位置
$user->select(array('field'=>'id,username','where'=>'id > 1','order'=>'id desc','limit'=>'2'));
根据个人习惯哪一种都可以
数组的形式和其他的查询形式是可以变更的
比如说 $user->where(id > 1)->order('id desc')->limit('2')->select();
他等价于 $user->where(id > 1)->order('id'=>'desc')->limit('2')->select();
$list = $user->table('think_user'=>'a','think_user_message'=>'b')->field('a.id as uid,b.username as name')->where('a.id=b.id')->select();
他等价于
$list = $user->table('think_user'=>'a','think_user_message'=>'b')->field('a.id'=>'uid','b.username'=>'name')->where('a.id=b.id')->select();
以上的多表关联仅仅是对简单的关联表进行查询
想使用join查询thinckphp有自己的函数,如法如下
$list = $user->table('think_user'=>'a','think_user_message'=>'b')->join('id on a.id=b.id','username on a.username=b.username')->select();
//distinct方法
$user->dlstinct(true)->select();//将表中重复的记录除掉
我们经常用到锁表机制,thinkphp中的用法是lock(true)
以上是对数据库读取的操作
下面的是对数据库的更新操作 我们使用的是save(); 例如
$data['username'] = 'test';
$data['password'] = md5('admin888');
$list = $user->where('id=5')->save($data);
这里可以用thinkphp中的date()方法进行代替传值
$data['username'] = 'test';
$data['password'] = md5('admin888');
$list = $user->where('id=5')->data($data)->save();
我们也可以不指定where条件 而是在提交更新数据的时候模拟一个where
$data['username'] = 'test';
$data['password'] = md5('admin888');
$data['id'] = '5';
$list = $user->save($data);
or
$list = $user->data($data)->save();
save()方法配合create()使用
function add() {
$user = new Model('user');
if($vo=$user->create) {
//这里没有对save进行赋值,是因为$vo已经将接受的表单数据添加给$user了,这时候save就是对user的操作啦,这就是createde的方便
if($user->save()) {
$this->success('更新成功');
} else {
$this->error('更新失败');
}
}
}
thinkphp数据库操作之添加add()
$data['username'] = 'test';
$data['password'] = md5('test');
$list = $user->add($data);
同样可以使用data()方法代替add()
$list = $user->data($data)->add();
add配合create方法使用和save一致
这些都是对form表单中 post方法的操作,我们也可以对表单中使用get方法进行 CURD 与post方法 不太一样
$_GET['password'] = md5($_GET['password']);
if($list = $user->add($_GET)) {
$this->success('添加成功');
} else {
$this->error('添加失败');
}
thinkphp中的delete()方法
$list = $user->delete(7);//会默认去寻找主键等于7的那条记录 并且删除掉
或者
$list = $user->where('id=7')->delete();//个人比较喜欢这种,比较直观
$user->getLastSql();调用最后执行的那条sql语句