您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP框架 > ThinkPHP

ThinkPHP 增删查改操作及视图中数据接收与处理

作者:Lidisam  来源:转载  日期:2016-02-16 21:48:36
收藏  评论:( 0 )  阅读:474

ThinkPHP 增删查改操作及视图中数据接收与处理

在这里我把$obj定义为model对象,适用于下面任何一个例子

①数据查询
调用方法:$obj->select() 或 $obj->find($id)
-->调用区别:select()获取二维数组,find($id)获取一维数组
条件附加:
1)where(条件值)
-->调用方法:$obj->where("id > 6")->select(); 或  $uid["id"] = $_POST["id"];  $obj->where($uid)->select();  
注:第二个等同于obj->where("id = 5")->select()
2)limit(数字)
-->调用方法:$obj->limit(1)->select()
3)field()
-->调用方法:$obj->field(字段1,字段2,字段3)->select()  
注:限制查询字段
4)order()
-->调用方法:$obj->order("id desc")->select();          
注:默认有升序,desc是降序
5)group()
-->调用方法:$obj->group("name = lisam")->select();    
注:分组查询,根据条件进行分组
6)having
-->调用方法:$obj->having("id = 5")->select();
注:调用与where类似(条件设置方法)
总结:
①having与where区别:在于前者必须是"结果集"中存在,或者必须在"数据表"中存在
例子:select 结果集 from table where 数据表 (加入结果集中使用 name as otherName 然后where otherName=lisam就是错误的)
②以上条件附加均可把select()换成find($id)
③可链式调用:$obj->limit(1)->order("id desc")->where("xxx")->select();

②数据添加
1)数组方式:
$arr  = array(
'name' => $name,
'mark' => $mark,
);
$obj->add($arr);

2)AR方式
$obj->name = $name;
$obj->mark = $mark;
$obj->add();

视图数据接收与处理
例子:添加商品

<form name="form1" method="post" action="__SELF__">  <!--__SELF__用于返回本页面(跳转过程不会出现缺少上一页面参数) -->
<input name="name" type="text">            //name必须与数据字段相对应
<input type="text" name="mark" >
</form>

处理数据并添加

function insert(){
if(empty($_POST)){  //挺好的判断方法->可直接处理显示与添加两个业务逻辑
//没有数据提交,进行数据展示
}else{
//含有数据,进行添加
$insert = M("News");
$z = $insert->create(); >//用于接收$_POST的所有数据
$insert->add();
}
}

③数据修改
1)数组方式
$arr  = array(
'name' => $name,
'mark' => $mark,
);
$obj->save($arr);

2)AR方式
$obj->name = $name;
$obj->mark = $mark;
$obj->save();

3)setField方式
$obj-> setField('signin_checkout',$checkout);    //用于更新个别字段的值。

注:里面的$obj应该是设置了条件的,如:$obj = $obj->where("xxx")->limit(2);  不能加select()!!不能加select()!!不能加select()!!
视图数据接收与处理
例子:修改某学生成绩
主页为(可选择点击获取某学生对应的id)
<a href="http://网址/index.php/分组/控制器/操作方法/参数名称/值/参数名称/值">

点击上面的超链接会跳到修改页面

<form name="form1" method="post" action="__SELF__">  <!--__SELF__用于返回本页面(跳转过程不会出现缺少上一页面参数) -->
<input type="hidden" name="uid" value="{$vo.id}">  <!--{$vo.id}为该数据对应的id-->
<input name="name" type="text">            <!--name必须与数据字段相对应-->
<input type="text" name="mark" >
</form>

由上面视图对应的控制器进行处理

function update($uid){  //这个$uid用于接收主页跳转到修改页面的uid
$obj = D("Mark");
//两个逻辑用于展示和收集
if(!empty($_POST)){
//数据不为空
$res = $obj-> save($_POST);  //直接使用一个就可以
if($res){  //这个你喜欢
//处理一些修改成功的逻辑
}else{
//处理一些修改失败的逻辑
}
}else{
//没有获取到数据就直接展示之前的数据
$info = $obj->find($uid);
$this->assign('info',$info);
$info->display();
}
}

注:get参数的传递和接收中 传递的get变量名称与方法形参变量名称必须一致
如:http://网址/index.php/Admin/Index/update/news_id/108/news_name/lisam
对应的控制器为:function update($news_id , $news_name){          }

④数据删除
调用方法:$obj->delete($id);
注:$obj是可附加条件,如:$obj->where("id > 5")->delete();//此时不适用$id,不过不推荐删除,只推荐逻辑删除(即在数据中添加一条字段用于判断是否已删除)

⑤SQL原声语句
1)查询语句:
$sql = "select * from xxxx";
$obj->query($sql);

2)添加/修改/删除语句:
$sql = "insert/update/delete ............";
$obj->execute($sql);


原文出处:ThinkPHP 增删查改操作及视图中数据接收与处理





除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/think/1156.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论
UncleToo,一档有态度的PHP中文网

图片教程