账户中心 退出系统
开发文档 资讯·分享 技术交流 会员登录
phpGrace GSCMS 公众号系统
完成配置

phpGrace 内置了数据库操作工具类和丰富的数据操作方法,您可以方便地进行数据库操作;

类库特色

1 内部单例模式,保证一库一连,避免同库多次连接产生的效率问题;
2 支持分布式数据库,随机连接一个具体的分布式数据库;
3 支持读写分离模式,根据 sql 命令自动选择写入库和读写库;
4 丰富的数据操作方法,大部分的操作可以通过数据库类的方法来实现,基本不需要自己编写 sql 语句;

配置说明

在使用数据库类之前您需要先配置并理解数据库信息。打开 appConfig/database.php,添加如下信息 :

数据库配置文件位置

项目根目录/appConfig/database.php

数据库配置语法

配置以数据库名称为单位,一个数据库名对应一个配置项。 mainDB 为默认配置项目,后续数据库操作默认使用此配置;

return array(
    // mainDB 数据库配置
    '配置名称1' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => '数据库名称',
        // 数据表统一前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入功能 ]
        'write' => array(),
        // 读取数据库配置 如果不需要读写分离 read 为一个空数组即可
        'read' => array()
    ),
    '配置名称2' => array(
        //....
    )
);

数据库配置文件说明

1 支持分布式数据库配置,使用时随机选择;
2 支持读写分离 ( 类库会根据 sql 语句自动连接对应的读写库并进行后续操作 );
3 一个应用可以包含多个站点、并配置多个数据库,都在 appConfig/database.php 内配置;
4 mainDB 为默认数据库配置,如果一个项目涉及多个数据库请自定义配置多个数据库;
5 支持的数据库类型 mysql 和 sqlsrv;

示例一 单数据库服务器配置

场景 : 同一项目下多个或单个站点使用一个数据库,不需要分布式,不需要读写分离。

<?php
return array(
    // mainDB 数据库配置
    'mainDB' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => 'grace',
        // 数据表前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入数据时使用的数据库服务器 ]
        'write' => array(
            // 主机地址
            'host'           => array('localhost'),
            // 端口
            'port'           => array(3306),
            // 用户名
            'username'       => array('username'),
            // 密码
            'password'       => array('password'),
        ),
        // 读取数据库配置 如果不需要读写分离 read 为一个空数组即可
        'read' => array()
    )
);

示例二 2个数据库服务器实现读写分离

场景 : 同一项目下多个或单个站点使用2个数据库服务器,实现读写分离。

<?php
return array(
    // mainDB 数据库配置
    'mainDB' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => 'grace',
        // 数据表前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入数据时使用的数据库服务器 ]
        'write' => array(
            // 主机地址
            'host'           => array('localhost'),
            // 端口
            'port'           => array(3306),
            // 用户名
            'username'       => array('username'),
            // 密码
            'password'       => array('password'),
        ),
        // 读取数据时使用的数据库服务器
        'read' => array(
            // 主机地址
            'host'           => array('192.168.1.200'),
            // 端口
            'port'           => array(3306),
            // 用户名
            'username'       => array('username'),
            // 密码
            'password'       => array('password'),
        )
    )
);

示例三 多个数据库服务器实现分布式及读写分离

场景 : 同一项目下多个或单个站点使用多个数据库服务器,实现分布式及读写分离。

<?php
return array(
    // mainDB 数据库配置
    'mainDB' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => 'grace',
        // 数据表前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入数据时使用的数据库服务器 ] [ 支持多个随机使用,配置方式和下面的读取库配置一致 ]
        'write' => array(
            // 主机地址
            'host'           => array('localhost'),
            // 端口
            'port'           => array(3306),
            // 用户名
            'username'       => array('username'),
            // 密码
            'password'       => array('password'),
        ),
        // 读取数据时使用的数据库服务器
        'read' => array(
            // 主机地址 多个地址
            'host'           => array('192.168.1.200', '192.168.1.201'),
            // 端口 多个端口对应主机地址
            'port'           => array(3306,3306),
            // 用户名 多个用户名对应主机地址
            'username'       => array('username', 'username'),
            // 密码 多个密码对应主机地址
            'password'       => array('password','password'),
        )
    )
);

示例四 应用涉及多个不同名称的数据库

场景 : 同一项目下多个或单个站点使用多个数据库。

<?php
return array(
    // mainDB 数据库配置
    'mainDB' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => 'grace',
        // 数据表前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入数据时使用的数据库服务器 ]
        'write' => array(
            // 主机地址
            'host'           => array('localhost'),
            // 端口
            'port'           => array(3306),
            // 用户名
            'username'       => array('username'),
            // 密码
            'password'       => array('password'),
        ),
        // 读取数据库配置 如果不需要读写分离 read 为一个空数组即可
        'read' => array()
    ),
    // 第2个数据库配置
    'db2' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => '数据库名称',
        // 数据表前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入数据时使用的数据库服务器 ]
        'write' => array(
            // 主机地址
            'host'           => array('主机地址'),
            // 端口
            'port'           => array(端口),
            // 用户名
            'username'       => array('username'),
            // 密码
            'password'       => array('password'),
        ),
        // 读取数据库配置 如果不需要读写分离 read 为一个空数组即可
        'read' => array()
    )
);

数据库操作

配置完成后即可通过 grace\database::init() 函数及 grace\database::table() 函数获得数据库或数据表操作对象,通过对象的数据操作方法快速的实现数据库操作,详见后面的章节。