tp3.2 基本操作数据库

tp3.2 入门操作数据库


    
    
    
    
  1. $model = M( "表名");
  2. $model = D( "表名或模型名"); //使用模型名时,必须生成一个模型文件

M 是系统模型,D 是自定义模型。

M函数比较适合增删改查操作,D函数适合增删改查和一些其他操作。由于M不需要加载具体的模型类,因此M函数的效率会比D高一些,推荐使用M。


一、增加

1、添加一条数据:

返回插入的主键值,失败返回false


   
   
   
   
  1. $model->add($data);
  2. $model->data($data)->add();
  3. //3.2.3版本开始,可以支持不执行SQL而只是返回SQL语句
  4. $sql = $model->fetchSql( true)->add($data);
  5. echo $sql;

2、添加多条数据:

成功:如果主键是自动增长型,返回值为新增记录Id最大值,否则返回true
失败:返回 false


   
   
   
   
  1. //该功能需要3.2.3以上版本,3.2.3以下版本仅对mysql数据库支持
  2. $model->addAll($dataList)

二、删除:

返回值是删除的记录数SQL出错返回false0表示没有删除任何数据


   
   
   
   
  1. //删除一条数据
  2. $model->delete( "5"); //删除主键为5的数据
  3. //删除多条数据
  4. $model->where( 'id=5')->delete(); // 删除id为5的用户数据
  5. $model->delete( '1,2,5'); // 删除主键为1,2和5的用户数据
  6. $model->where( 'status=0')->delete(); // 删除所有状态为0的用户数据
  7. //也可以用order和limit方法来限制要删除的个数
  8. $model->where( 'status=0')->order( 'create_time')->limit( '5')->delete(); // 删除所有状态为0的5 个用户数据 按照创建时间排序
  9. //为了避免错删数据,如果没有传入任何条件进行删除操作的话,不会执行删除操作
  10. $model->delete();
  11. //删除所有的记录,可使用下面的方式
  12. $model->where( '1')->delete();

三、修改:

返回值是影响的记录数更新出错返回false


   
   
   
   
  1. $model->where()->save($data);
  2. //如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录
  3. $model->save($data)
  4. //更新一个字段
  5. $model-> where( 'id=5')->setField( 'name', 'ThinkPHP'); // 更改用户id为5的name值
  6. //更新多个字段
  7. $data = array( 'name'=> 'ThinkPHP', 'email'=> '[email protected]');
  8. $model-> where( 'id=5')->setField(data ); // 更改用户id为5的name和email的值
  9. //对于统计字段(通常指的是数字类型)的更新
  10. $model->where( 'id=5')->setInc( 'score', 3); // 用户的积分加3
  11. $model->where( 'id=5')->setInc( 'score'); // 用户的积分加1
  12. $model->where( 'id=5')->setDec( 'score', 5); // 用户的积分减5
  13. $model->where( 'id=5')->setDec( 'score'); // 用户的积分减1
  14. //延迟更新
  15. $model->where( 'id=5')->setInc( 'view', 1); // 文章阅读数加1
  16. $model->where( 'id=5')->setInc( 'view', 1, 60); // 文章阅读数加1,并且延迟60秒更新(写入)

四、查询

1、查询一条数据:

返回一个关联数组空返回NULL出错返回false


   
   
   
   
  1. $result = $model->where()->find();
  2. $model->field( "字段,字段...")->find();
  3. $model->field()->where()->find();

2、查询多条数据:

返回二维数组空返回NULL出错返回false


   
   
   
   
  1. $model->where()->select();
  2. $model->field( "字段...")->select();
  3. $model->where()->select();
  4. $model->order()->select();
  5. $model->limit()->select();
  6. $model->field()->where()->order()->limit()->select();

五、原生SQL

1、查询

返回结果数据集(同select方法)错误返回false

$model->query($sql);
   
   
   
   

2、增删改

返回影响的记录数错误返回false

$model->execute($sql);
   
   
   
   

六、聚合查询


   
   
   
   
  1. $model->where()->count();
  2. $model->where()->max();
  3. $model->where()->min();
  4. $model->where()->avg();
  5. $model->where()->sum();

七、多表查询


   
   
   
   
  1. $model->join( "表2 on 关联的字段相等")->find();
  2. $model->join( "表2 on 关联的字段相等")->select();

八、分页


   
   
   
   
  1. use Think\ Page; //导入分页类
  2. $page = new Page(总记录数,每页显示的记录数); //实例化分页类
  3. $page->firstRow; //每页记录起始值
  4. $page->listRows; //每页显示的记录数
  5. $page->show(); //分页显示输出

官方提供的实例:


   
   
   
   
  1. $User = M( 'User'); // 实例化User对象
  2. $count = $User->where( 'status=1')->count(); // 查询满足要求的总记录数
  3. $Page = new \Think\Page($count, 25); // 实例化分页类 传入总记录数和每页显示的记录数(25)
  4. $show = $Page->show(); // 分页显示输出
  5. // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
  6. $list = $User->where( 'status=1')->order( 'create_time')->limit($Page->firstRow. ','.$Page->listRows)->select();
  7. $this->assign( 'list',$list); // 赋值数据集
  8. $this->assign( 'page',$show); // 赋值分页输出
  9. $this->display(); // 输出模板

九、事务处理


   
   
   
   
  1. $model->startTrans(); //开启事务
  2. $model->commit(); //提交
  3. $model->rollback(); //回滚

 

你可能感兴趣的:(数据库,tp)