alexsasharegan/database

PHP mysqli 工具,用于正确处理错误、连接,并使获取数据更简单、更DRY。

2.0.0 2017-04-02 14:46 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

PHP MySQL 工具,用于正确处理错误、连接,并使获取数据更简单、更DRY。

安装

使用 Composer

composer require alexsasharegan/database

然后在供应商自动加载器中要求

<?php

require_once 'path/to/vendor/autoload.php';

使用方法

静态方法

调用 Database::connect( [ string $configFile = './database.json', array $options = [] ] ) 而不带任何参数将会在调用文件目录中查找名为 database.json 的配置文件。为了使用此默认行为,请将您的 database.json 放置在您的 PHP 文件旁边。如果您的配置文件位于其他位置,请将路径作为第一个参数传入。

项目包含一个示例配置文件。只需将名称从 database.example.json 更改为 database.json,并将其移动到您的调用 PHP 文件旁边。以下是示例配置

<?php

// library defaults
$connectionOptions = [
    'DB_HOST'     => '127.0.0.1',
    'DB_NAME'     => 'test',
    'DB_PORT'     => '3306',
    'DB_CHARSET'  => 'utf8',
    'DB_USERNAME' => 'admin',
    'DB_PASSWORD' => 'admin',
];

// library defaults
$pdoOptions = [
	PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
	PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
	PDO::ATTR_EMULATE_PREPARES   => FALSE,
	PDO::ATTR_STRINGIFY_FETCHES  => FALSE,
];

$mySQL = new \Database\MySQL($connectionOptions, $pdoOptions);

其他一些静态方法

<?php

use Database\MySQL;

# Takes a MySQL-formatted date string and returns a string file path
MySQL::SQLDateToPath( string $SQLDate );
# example
echo MySQL::SQLDateToPath( '2016-09-06 14:02:26' );
# Outputs: '2016/09/06'

# Returns a MySQL-formatted timestamp
echo MySQL::now();
# Outputs: '2016-09-06 14:04:15';

实例方法

查询

<?php
$mySQL = new \Database\MySQL($connectionOptions, $pdoOptions);

# use a try/catch block to handle a bad query
try {
  $mySQL->select(['firstName', 'lastName'])
        ->from('users')
        ->where('id', 'in', [1,2,3])
        # we can chain methods together here
        ->map(
        # this can be any callable type ( will be called with each row )
        # closures let us 'use' vars from parent scope
        # be wary of when you need to pass by reference using &
        function ( array $resultRow ) 
        {
            $users[] = new User($resultRow); # the $resultRow is an associative array
        }
    );
} catch ( Exception $e ) {
  # insert some custom error handling here
  exit( $e );
}