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,name asc")->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);

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28666081/article/details/50624952
个人分类: PHP
上一篇设计模式三之装饰者模式
下一篇android布局属性详解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭