PHP:ThinkPHP5数据库操作增删改查-Db类

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: PHP:ThinkPHP5数据库操作增删改查-Db类

项目文件目录

project/
    -app
    -conf

1、数据库配置

方式一 配置文件

conf/database.php

<?php
return [
    'type'            => 'mysql',
    'hostname'        => '127.0.0.1',
    'database'        => 'root',
    'username'        => 'root',
    'password'        => '123456',
    'hostport'        => '3306',
    'charset'         => 'utf8'
];

方式二:控制函数

app\index\controller\Index.php

namespace app\index\controller;
use think\Db;
class Index
{
    public function index()
    {
        $db = Db::connect([
            'type' => 'mysql',
            'hostname' => '127.0.0.1',
            'database' => 'root',
            'username' => 'root',
            'password' => '123456',
            'hostport' => '3306',
            'charset' => 'utf8'
        ]);
        dump($db);
    }
}

方式三 DSN方式 Data Source Name

$db = Db::connect('mysql://root:123456@127.0.0.1:3306/demo#utf8');

方式四 从读取配置

conf/config.php

<?php
return [
    'db_config' => [
        'type'            => 'mysql',
        'hostname'        => '127.0.0.1',
        'database'        => 'root',
        'username'        => 'root',
        'password'        => '123456',
        'hostport'        => '3306',
        'charset'         => 'utf8'
    ]
];

app\index\controller\Index.php

$db = Db::connect('db_config');
// 或者
use  think/Config;
$db = Db::connect(Config::get('db_config'));

2、获取数据表对象

$bd = Db::table('pre_user')  # Db是单例模式
$bd = Db::name('user')  # 会自动添加前缀
# 助手函数 db 每次调用实例化false取消每次实例化
$bd = db('pre_user', [], false)  

3、查询数据

// 检查数据库配置
dump(config('database'));
// 使用sql语句查询
$res = Db::query("select * from student");
$res = Db::query("select * from student where id=?", [1]);
// 插入数据 返回影响条数
$res =Db::execute("insert into student set name=?, age=?", ['Tom',23]);
// select 返回所有记录 二维数组 []
$res = Db::table('student')->select();
// column 返回所有列记录 二维数组 NULL
# 如果存在第二个参数,为key值
$res = Db::table('student')->column('age', 'name');
// find 返回一条记录 一维数组 NULL
$res = Db::table('student')->find();
// value 返回一条记录中的某个字段 NULL
$res = Db::table('student')->value('name');

4、插入数据

$db = Db::table('student');
#insert 返回值是影响记录的行数,插入数
$res = $db->insert([
            'name' => 'Tom',
            'age' => 23
        ]);
#insetGetId 返回值插入数据的自增id
$res = $db->insertGetId([
            'name' => 'Tom',
            'age' => 23
        ]);
#insertAll 返回插入数据成功的行数
$data = [];
for ($i=0; $i<10; $i++)
{
    $data[] = [
        'name' => "Tom{$i}",
        'age' => 23
    ];
};
$res = $db->insertAll($data);

5、更新数据

# update 更新多个字段 返回影响行数
$res = $db->where([
        'id'=>1
    ])->update([
        'name'=> '王小二'
    ]);
# setField 更新一个字段 返回影响行数
$res = $db->where([
        'id' => 1
    ])->setField('name', '王大锤');
# setInc 自增 返回影响行数
$res = $db->where([
        'id' => 1
    ])->setInc('age');
# setDec 自减 返回影响行数
$res = $db->where([
        'id' => 1
    ])->setDec('age');

6、删除数据

# 条件删除,返回影响行数
$res = $db->where(
        ['id'=>1]
    )->delete();
# 传入主键删除 返回影响行数
$res = $db->delete(2);
# 清空数据
$res = $db->where('1=1')->delete();

7、条件构造器

buildSql();返回SQL语句

where(‘字段名’,‘表达式’,‘查询条件’);

表达式

含义

EQ、=

等于(=)

NEQ、<>

不等于(<>)

GT、>

大于(>)

EGT、>=

大于等于(>=)

LT、<

小于(<)

ELT、<=

小于等于(<=)

LIKE

模糊查询

[NOT] BETWEEN

(不在)区间查询

[NOT] IN

(不在)IN 查询

[NOT] NULL

查询字段是否(不)是NULL

[NOT] EXISTS

EXISTS查询

EXP

表达式查询,支持SQL语法

> time

时间比较

< time

时间比较

between time

时间比较

notbetween time

时间比较


示例

$db->where()->buildSql();
# 构造条件
$res = $db
    ->where('id', 'in', [1, 2, 3])
    ->whereOr('id', '<', '4')
    ->buildSql();
// string(62) "( SELECT * FROM `student` WHERE  `id` IN (1,2,3) OR `id` < 4 )"

链式操作

$res = Db::table('user')
    ->where('id', '>', 10)
    ->field('name', 'id')
    ->order('id DESC')
    // ->limit(3, 5)
    // ->page(3, 5)  // limit((3-1)*5, 5)
    ->group('`group`')
    ->select();
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
9月前
|
JSON 前端开发 安全
layui框架实战案例(22):多附件上传实战开发实录(php后端、文件删除、数据库删除)
layui框架实战案例(22):多附件上传实战开发实录(php后端、文件删除、数据库删除)
318 0
|
3月前
|
关系型数据库 MySQL PHP
|
1月前
|
存储 PHP Apache
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
|
2月前
|
缓存 NoSQL PHP
百度搜索:蓝易云【如何使用PHP进行数据库索引优化?】
通过以上方法,你可以使用PHP进行数据库索引优化,提高数据库查询性能和整体应用性能。同时,定期维护数据库和优化查询语句也是保持数据库高性能的关键。
43 11
|
2月前
|
监控 关系型数据库 MySQL
PHP与MySQL的结合:实现局域网上网行为监控软件的数据库管理
在当今信息化时代,网络安全日益成为重要的话题。为了有效监控和管理局域网上网行为,开发一个基于PHP和MySQL的数据库管理系统是一个理想的选择。本文将介绍如何结合PHP和MySQL,开发一款简单而高效的局域网上网行为监控软件,并重点关注数据库管理方面的实现。
196 0
|
4月前
|
PHP 数据库
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
|
4月前
|
数据库连接 PHP 数据库
【PHP学习】—PHP连接数据库(六)
【PHP学习】—PHP连接数据库(六)
|
4月前
|
Oracle 关系型数据库 MySQL
php7.2安装OCI8扩展支持oracle数据库
做项目的时候,远程的oracle数据库为我们提供一张中间表,我这边业务中的一些数据是需要到oracle数据库中的这张中间表去查询的。 PHP连接oracle数据库。需要用到OCI8的扩展。说来惭愧,工作这么多年,还没有正经的使用过oracle数据库。 mysql数据库的语法跟oracle数据库的语法是不一样的,别跟我似的上来就用mysql的语法来操作oracle数据库……有点丢人了…… 今天我们大概记录一下OCI8扩展的安装过程。
57 0