Pdo 简单的MySQL连接类

 PHP基础  2019-02-22  admin  1477  1993

Pdo 简单的MySQL连接类

class PdoDb
{
    /**
     * 数据库默认的连接信息
     * @var array
     */
    private $dbConfig = [
        'db' => 'mysql',
        'host' => '127.0.0.1',
        'port' => '3306',
        'user' => 'root',
        'pwd' => 'root',
        'dbname' => '',
        'charset' => 'utf8',
    ];
    private $db; //
    private static $instance; //单例模式,本类对象的引用

    /**
     * 私有化构造函数
     * PdoDb constructor.
     * @param $config
     */
    private function __construct($config)
    {
        $this->dbConfig = array_merge($this->dbConfig, $config);
        $this->connect();//连接数据库
    }

    /**
     * 获得单例对象
     * @param array $config 数据库连接信息
     * @return PdoDb
     */
    public static function db($config = [])
    {
        if (!self::$instance instanceof self) {
            self::$instance = new self($config);
        }
        return self::$instance;
    }

    /**
     * pdo 连接数据库
     */
    private function connect()
    {
        $dsn = "{$this->dbConfig['db']}:host={$this->dbConfig['host']};port={$this->dbConfig['port']};dbname={$this->dbConfig['dbname']}";

        $db_options = [
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . $this->dbConfig['charset']
        ];
        try {
            //连接数据库,选择数据库,设置字符集
            $this->db = new PDO($dsn, $this->dbConfig['user'], $this->dbConfig['pwd'], $db_options);
        } catch (PDOException $e) {
            //输出异常信息
            echo $e->getMessage() . "<br>";
            exit('数据库连接失败!');
        }
    }

    /**
     * 增删改
     * @param $sql
     * @return mixed
     */
    public function exec($sql)
    {
        $res = $this->db->exec($sql);
        return $res;
    }

    /**
     * @param $sql
     * @return mixed
     */
    public function query($sql)
    {
        $res = $this->db->query($sql);
        return $res;
    }

    /**
     * 返回所有数据,二维数组
     * @param $sql
     * @return mixed
     */
    public function getAll($sql)
    {
        $res = $this->query($sql)->fetchAll(PDO::FETCH_ASSOC);
        return $res;
    }

    /**
     * 返回一列数据 一维数组
     * @param $sql
     * @param int $num
     * @return mixed
     */
    public function getColumn($sql, $num = 0)
    {
        $res = $this->query($sql);
        $result = [];
        while (($row = $res->fetchColumn($num)) !== false) {
            $result[] = $row;
        }
        return $result;
    }

    /**
     * 返回一行数据 一维数组
     * @param $sql
     * @return mixed
     */
    public function getRow($sql)
    {
        $res = $this->query($sql)->fetch(PDO::FETCH_ASSOC);
        return $res;
    }

    /**
     * 返回一个数据 聚合函数
     * @param $sql
     * @return mixed
     */
    public function getOne($sql)
    {
        $res = $this->query($sql)->fetch(PDO::FETCH_NUM);
        return $res[0];
    }


}

使用举例

$config = [
    'db' => 'mysql',
    'host' => '127.0.0.1',
    'port' => '3306',
    'user' => 'root',
    'pwd' => 'root',
    'dbname' => 'study',
    'charset' => 'utf8',
];
$sql = 'select * from student where 1 ';
$res = PdoDb::db($config)->getAll($sql);
print_r($res);

$sql = "insert into student (id,name) values (null,'abc') ";
$res = PdoDb::db($config)->exec($sql);
var_dump($res);


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

Pdo 简单的MySQL连接类 —— code.cent123.com

相关推荐


Systemd Web 管理系统:简化服务管理

# Systemd Web Systemd Web 是一个 Systemd 的 Web UI 管理系统,通过直观的界面和易用的操作,让用户能够轻松地管理 Linux 系统和服务。该项目旨在简化 Systemd 的使用,使得无论是专业的系统管理员还是普通的用户,都能够方便地对系统进行操作。 ## [github地址] (https://github.com/topascend/systemd

systemctl 使用

Systemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。而systemctl是Systemd的主命令,用于管理系统。其实我们大部分服务都有使用systemctl管理,比如MySQL、Nginx等等。常见配置如下:[Unit] #单元描述 Description=GFAPP #在什么服务启动之后再执行本程序 After=mysql.service [Serv

go 的 Pool池对象 sync.Pool 创建mysql连接池

//在这个例子中,我们创建了一个sync.Pool,其中包含一个New函数,该函数创建一个MySQL连接 //在someFunction中,我们使用dbPool.Get()从池中获取一个MySQL连接 //然后我们使用连接进行一些操作,最后使用dbPool.Put()将连接放回池中 //我们可以通过设置dbPool的大小来初始化连接池中的连接数量 //例如,如果我们想要初始化10个连接,我

php 保存远程图片到本地

/** *保存远程图片到本地 *@paramstring$avatar *@returnbool|string */ functionsaveRemoteImage($url,$filename=&#39;&#39;) { if($url==&#39;&#39;){ returnfalse; } try{ if($filename==&#39;&#39;){ $ex