ric/pdogo

PHP数据操作类,改编自Medoo


Keywords
database, sql, mysql, sqlite, postgresql, lightweight, mssql, oracle, php framework, mariadb
License
MIT

Documentation

PHP简单的数据操作类,继承自Medoo,进行了必要的优化

优势

  • - 只有几十kb大小

  • 容易 - 非常容易使用

  • 功能强大 - 支持各种常见和复杂的SQL查询、数据映射和防止SQL注入

  • 兼容 - 兼容MySQL、MSSQL、SQLite、MariaDB、Sybase、Oracle、PostgreSQL甚至更多

  • 集成 - 可以集成到任何PHP中, 包括 Laravel, Codeigniter, Yii, Slim 及一些自己写到框架或者面向过程脚本

要求

PHP 5.4+ 和PDO扩展

开始使用

我们需要安装好 composer

添加PDOGO到 composer.json 文件中去

$ composer require ric/PdoGo

执行 composer update 更新

$ composer update

// 在你项目的入口处添加自动引用


require 'vendor/autoload.php';

// 设置你的配置文件

$config = [
'PdoGo' => [
        'database_type' => 'mysql',
        'database_name' => '数据库名称',
        'server' => '数据库链接地址',
        'username' => '数据库账号',
        'password' => '数据库密码',
        'charset' => 'utf8',
        'port' => 3306,            // 可选参数
        'prefix' => '',// 可选,定义表的前缀
        'option' => [   // 连接参数扩展, 更多参考 http://www.php.net/manual/en/pdo.setattribute.php
            //PDO::ATTR_CASE => PDO::CASE_NATURAL
        ]
    ],
]

//编写你的类

class MDB {
    /**
     * 实例数组
     *
     * @var array
     */
    static public $instance  = [];
    static public $_instance = null;

    /**
     * 获取实例
     *
     * @param string $config_name
     * @return DbConnection
     * @throws Exception
     */
    static public function instance($dbname) {
        if (!$config[$dbname]) {
            throw new Exception('找不到数据库: '.$dbname);
        }
        
        if (empty(self::$instance[$dbname])) {
            self::$instance[$dbname] = new \Ric\PdoGo($config[$dbname]);
        }
        return self::$instance[$dbname];
    }
}

// 例子

$database->insert('account', [
    'user_name' => 'foo',
    'email' => 'foo@bar.com'
]);

$data = $database->select('account', [
    'user_name',
    'email'
], [
    'user_id' => 50
]);

echo json_encode($data);

// [
//     {
//         "user_name" : "foo",
//         "email" : "foo@bar.com",
//     }
// ]

说明

该类诞生的目的在于目前手中的一个Discuz项目,需要进行源码改造使用,大概的使用手册可以参考Medoo数据操作类

该类在Discuz中可以配合phpdebug使用,输出mysql的查询时间,在其它中无效,或者需要改造配置文件可以生效

该类去除了sql的双引号限制,在Medoo中带双引号的sql会被转义而导致不生效果