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个数据库服务器,实现读写分离。
<?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() 函数获得数据库或数据表操作对象,通过对象的数据操作方法快速的实现数据库操作,详见后面的章节。