tp3.2 基本操作数据库

tp3.2 入门操作数据库
$model = M(“表名”);
$model = D(“表名或模型名”);//使用模型名时,必须生成一个模型文件
M 是系统模型,D 是自定义模型。

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

一、增加
1、添加一条数据:
返回插入的主键值,失败返回false
m o d e l − > a d d ( model->add( model>add(data);

m o d e l − > d a t a ( model->data( model>data(data)->add();

//3.2.3版本开始,可以支持不执行SQL而只是返回SQL语句
$sql = m o d e l − > f e t c h S q l ( t r u e ) − > a d d ( model->fetchSql(true)->add( model>fetchSql(true)>add(data);
echo $sql;
2、添加多条数据:
成功:如果主键是自动增长型,返回值为新增记录Id最大值,否则返回true
失败:返回 false
//该功能需要3.2.3以上版本,3.2.3以下版本仅对mysql数据库支持
m o d e l − > a d d A l l ( model->addAll( model>addAll(dataList)
二、删除:
返回值是删除的记录数,SQL出错返回false,0表示没有删除任何数据
//删除一条数据
$model->delete(“5”); //删除主键为5的数据

//删除多条数据
$model->where(‘id=5’)->delete(); // 删除id为5的用户数据
$model->delete(‘1,2,5’); // 删除主键为1,2和5的用户数据
$model->where(‘status=0’)->delete(); // 删除所有状态为0的用户数据

//也可以用order和limit方法来限制要删除的个数
$model->where(‘status=0’)->order(‘create_time’)->limit(‘5’)->delete(); // 删除所有状态为0的5 个用户数据 按照创建时间排序

//为了避免错删数据,如果没有传入任何条件进行删除操作的话,不会执行删除操作
$model->delete();

//删除所有的记录,可使用下面的方式
$model->where(‘1’)->delete();
三、修改:
返回值是影响的记录数,更新出错返回false
m o d e l − > w h e r e ( ) − > s a v e ( model->where()->save( model>where()>save(data);

//如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录
m o d e l − > s a v e ( model->save( model>save(data)

//更新一个字段
$model-> where(‘id=5’)->setField(‘name’,‘ThinkPHP’);// 更改用户id为5的name值

//更新多个字段
$data = array(‘name’=>‘ThinkPHP’,‘email’=>‘ThinkPHP@gmail.com’);
$model-> where(‘id=5’)->setField(data );// 更改用户id为5的name和email的值

//对于统计字段(通常指的是数字类型)的更新
$model->where(‘id=5’)->setInc(‘score’,3); // 用户的积分加3
$model->where(‘id=5’)->setInc(‘score’); // 用户的积分加1
$model->where(‘id=5’)->setDec(‘score’,5); // 用户的积分减5
$model->where(‘id=5’)->setDec(‘score’); // 用户的积分减1

//延迟更新
$model->where(‘id=5’)->setInc(‘view’,1); // 文章阅读数加1
$model->where(‘id=5’)->setInc(‘view’,1,60); // 文章阅读数加1,并且延迟60秒更新(写入)
四、查询
1、查询一条数据:
返回一个关联数组,空返回NULL,出错返回false
$result = $model->where()->find();

$model->field(“字段,字段…”)->find();
$model->field()->where()->find();
2、查询多条数据:
返回二维数组,空返回NULL,出错返回false
$model->where()->select();

$model->field(“字段…”)->select();
$model->where()->select();
$model->order()->select();
$model->limit()->select();
$model->field()->where()->order()->limit()->select();
五、原生SQL
1、查询
返回结果数据集(同select方法),错误返回false
m o d e l − > q u e r y ( model->query( model>query(sql);
2、增删改
返回影响的记录数,错误返回false
m o d e l − > e x e c u t e ( model->execute( model>execute(sql);
六、聚合查询
$model->where()->count();
$model->where()->max();
$model->where()->min();
$model->where()->avg();
$model->where()->sum();
七、多表查询
$model->join(“表2 on 关联的字段相等”)->find();
$model->join(“表2 on 关联的字段相等”)->select();
八、分页
use Think\Page;//导入分页类

$page = new Page(总记录数,每页显示的记录数);//实例化分页类

$page->firstRow;//每页记录起始值
$page->listRows;//每页显示的记录数

$page->show();//分页显示输出
官方提供的实例:

$User = M(‘User’); // 实例化User对象
$count = $User->where(‘status=1’)->count();// 查询满足要求的总记录数
KaTeX parse error: Undefined control sequence: \Think at position 18: …ge = new \̲T̲h̲i̲n̲k̲\Page(count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25)
$show = $Page->show();// 分页显示输出
// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
$list = U s e r − > w h e r e ( ′ s t a t u s = 1 ′ ) − > o r d e r ( ′ c r e a t e t i m e ′ ) − > l i m i t ( User->where('status=1')->order('create_time')->limit( User>where(status=1)>order(createtime)>limit(Page->firstRow.’,’.$Page->listRows)->select();
t h i s − > a s s i g n ( ′ l i s t ′ , this->assign('list', this>assign(list,list);// 赋值数据集
t h i s − > a s s i g n ( ′ p a g e ′ , this->assign('page', this>assign(page,show);// 赋值分页输出
$this->display(); // 输出模板
九、事务处理
$model->startTrans();//开启事务

$model->commit();//提交

$model->rollback();//回滚

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TP3.2 是一个基于PHP的开源框架,它提供了很多方便的功能,其中包括利用jQuery Ajax实现分页功能。下面是一个例子说明如何使用jQuery Ajax实现前台与后台的分页功能: 前台源码: ```html <!DOCTYPE html> <html> <head> <title>分页示例</title> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> $(document).ready(function(){ var currentPage = 1; // 当前页码 // 加载数据函数 function loadData(page){ $.ajax({ url: 'loadData.php', type: 'POST', data: {page: page}, success: function(response){ $("#dataContainer").html(response); } }); } // 初始加载数据 loadData(currentPage); // 点击页面切换按钮 $(document).on("click", ".pagination a", function(e){ e.preventDefault(); var page = $(this).attr("data-page"); currentPage = page; loadData(currentPage); }); }); </script> </head> <body> <div id="dataContainer"></div> </body> </html> ``` 后台源码(loadData.php): ```php <?php include "dbconfig.php"; // 引入数据库配置文件 $page = $_POST['page']; $perPage = 10; // 每页显示记录数 $offset = ($page - 1) * $perPage; // 计算偏移量 $result = $conn->query("SELECT * FROM your_table LIMIT $offset, $perPage"); if ($result->num_rows > 0) { // 输出数据 while($row = $result->fetch_assoc()) { echo "<p>{$row['name']}</p>"; } } $conn->close(); ?> ``` 上述代码中,前台页面加载时会发送一个Ajax请求到后台的`loadData.php`文件,同时传递一个`page`参数表示当前页码。后台根据参数查询对应的数据,并将结果返回给前台,然后前台更新页面内容。用户可以通过点击页面切换按钮,改变`page`参数的值,从而实现翻页功能。 需要注意,后台代码中的`dbconfig.php`文件应该包含数据库连接的配置信息,以确保能够成功连接数据库并查询数据。 这只是一个简单的分页功能示例,你可以根据自己的实际情况进行调整和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值