2.1数据查询操作
调用方法:model对象->select();
具体使用:
model−>select();//查询并返回数据表中所有数据信息
model->select(主键id值); //查询并返回数据表中条件等于id的数据信息
$model->select(‘主键id1,主键id2,主键id3…’);//查询主键信息在搜索范围内的数据信息
使用select方法始终返回一个二维数组。
2.1.1具体数据操作方法的使用
(1)where条件
model−>where(条件值);//条件值就是sql语句where后边的结果值(2)limit限制条数
model->limit(数字); //严格查询数字条数的记录
(3)field限制查询字段
model−>field(字段1,字段2,字段3…);(4)order排序
model->order(‘排序条件asc/desc’);
(5)group分组查询group by
$model->group(分组条件);
select count(*) from sw_goods //商品总记录数目
select goods_brand_id,count(*) from sw_goods group by goods_brand_id //查询每个品牌下的商品的总记录数
select goods_brand_id,avg(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的平均价格
select goods_brand_id,max(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的最高价格
select goods_brand_id,min(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的最低价格
select goods_brand_id,sum(goods_price) from sw_goods group by goods_brand_id //查询每个品牌下的商品的总价格
(6)having条件设置方法
having设置条件查询的效果与where效果类似
区别:
where:语句条件字段,必须是数据表中存在的字段
having:语句条件字段,必须是查询结果集中存在的字段
以上两个关键字在某些场合可以互换使用:
(1)两者通用
select goods_id,goods_name, goods_price from sw_goods where goods_price>100
select goods_id,goods_name, goods_price from sw_goods having goods_price>100
(2)只能使用where
select goods_id,goods_name from sw_goods where goods_price>100
select goods_id,goods_name from sw_goods where goods_price>100//错误
因为在查询结果集中没有goods_price但是数据库表中有这个字段。
(3)只能用having
select goods_grand_id,avg(goods_price) as ag from sw_goods group by goods_brand_id havingag>100
select goods_grand_id,avg(goods_price) as ag from sw_goods group by goods_brand_id where ag>100//错误
因为在查询结果集中有ag但是在数据库表中没有ag字段。
where()/limit()/field()三个方法直接存在于父类的Model里边
having()/order()/group()三个方法存在于Model的魔术方法__call()里边。
//数据操作常用方法
//限制查询条件
info=
goods->where(‘goods_price>1000 and goods_name like “%n%”’)->select();
//限制条数(limit(长度),limit(偏移量,长度))
info=
goods->limit(3)->select();
info=
goods->limit(1,3)->select();
//限制查询字段
info=
goods->field(‘goods_name,goods_price’)->select();
//排序(默认升序,降序格式:字段+空格+desc)
info=
goods->order(‘goods_price’)->select();
//分组查询
info=
goods->field(‘goods_brand_id,min(goods_price)’)
->group(‘goods_brand_id’)->select();
dump(
info);//6.having条件设置方法
info =
goods−>field(‘goodsbrandid,min(goodsprice)′)−>group(‘goodsbrandid′)−>having(‘min(goodsprice)>0′)−>select();dump(
info);
2.2数据添加操作
调用方法:add()
具体两种方式使用:
(1)数组方式
数组=array(元素(下标=>元素值),元素(下标=>元素值),…);下标:必须是数据表字段名称(否则是不会添加到数据库表中的)
model->add(
数组);数组的元素键名与数据表字段的名称必须一致(2)AR(ActiveRecord)活跃记录方式
model->属性(字段)=值;//属性字段必须与数据库表字段一致
model−>属性(字段)=值;….
model->add();
AR规范要求:
<1>一个model模型类与一个具体的表对应
<2>model类模型的实例化的对象与数据表的一条记录对应
<3>model模型类对象的属性与记录的字段对应
TP框架的AR是仿真产品,因为每个业务Model模型里边并不存在对应数据表的字段信息。
add方法执行成功后会返回一个生成的id值。
在模型中不添加字段,直接对对象的不存在的属性进行赋值。执行魔术方法__set()。
2.3数据修改操作
调用方法:model对象->save();
与add添加一样有两种方式:
(1)数组方式
model−>save(数组);(2)AR方式
model->字段=值;$model->save();
save方法返回受影响的行数,其中数组中必须有数据库表的主键,AR方式中必须指定主键值。
【注意】
数据修改必须设置条件,主键id或者where方法,二选一即可,否则执行失败。
2.4数据删除操作(删除操作最好假删除,用一个is_del字段标记是否被删除,以防恢复数据)
同样是两种方式:
model−>where(条件)−>delete();AR方式:
model->user_id=8;
z=
model->delete();
或者其他:
model−>delete(10);
model->delete(“10,23”);
2.5收集表单实现添加、修改操作
修改操作:
修改展示表单传递参数id
在修改页面添加隐藏域:
2.6执行原生的sql语句
sql=“select∗from….”;(1)查询语句:
model->query(
sql);//返回一个二维数组(2)添加/删除/修改语句:
model->execute($sql); //返回受影响条数