在这里我把$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); //用于更新个别字段的值。
视图数据接收与处理
例子:修改某学生成绩
主页为(可选择点击获取某学生对应的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);