[PDO]①⑨--执行SQL语句

PdoMYSQL.class.php

 DB_HOST,
                'username' => DB_USER,
                'password' => DB_PWD,
                'database' => DB_NAME,
                'hostport' => DB_PORT,
                'dsn' => DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME);
        }
        if (empty($dbConfig['hostname']))
            self::throw_exception('没有定义数据库配置,请先定义');
        self::$config = $dbConfig;
        if (empty(self::$config['params']))
            self::$config['params'] = array();
        if (!isset(self::$link)) {
            $configs = self::$config;
            if (self::$pconnect) {
                //开启长连接,添加到配置数组中
                $configs['params'][constant("PDO::ATTR_PERSISTENT")] = true;
            }
            try {
                self::$link = new PDO($configs['dsn'], $configs['username'], $configs['password'], $configs['params']);
            } catch (PDOException $e) {
                self::throw_exception($e->getMessage());
            }
            if (!self::$link) {
                self::throw_exception('PDO连接错误');
                return false;
            }
            self::$link->exec('SET NAMES ' . DB_CHARSET);
            self::$dbVersion = self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));
            self::$connected = true;
            unset($configs);
        }
    }

    /**得到所有记录
     * @param null $sql
     * @return mixed
     */
    public static function getAll($sql = null)
    {
        if ($sql != null) {
            self::query($sql);
        }
        $result = self::$PDOStatement->fetchAll(constant("PDO::FETCH_ASSOC"));
        return $result;
    }

    /**
     * 释放结果集
     */
    public static function free()
    {
        self::$PDOStatement = null;
    }

    public static function query($sql = '')
    {
        $link = self::$link;
        if (!$link) return false;
        //判断之前是否有结果集,如果有,释放结果集
        if (!empty(self::$PDOStatement)) self::free();
        self::$queryStr = $sql;
        self::$PDOStatement = $link->prepare(self::$queryStr);
        $res = self::$PDOStatement->execute();
        self::haveErrorThrowException();
        return $res;
    }

    public static function haveErrorThrowException()
    {
        $obj = empty(self::$PDOStatement) ? self::$link : self::$PDOStatement;
        $arrError = $obj->errorInfo();
        /**
         * Array
         * (
         * [0] => 42S02
         * [1] => 1146
         * [2] => Table 'test.user1' doesn't exist
         * )
         */
//        print_r($arrError);
        if ($arrError[0] != '00000') {
            self::$error = 'SQLSTATE ' . $arrError[0] . 'SQL Error: ' . $arrError[2] . '
Error SQL: ' . self::$queryStr; self::throw_exception(self::$error); return false; } if (self::$queryStr == '') { self::throw_exception('没有执行SQL语句'); return false; } } /** * 自定义错误处理 * @param $errMsg */ public static function throw_exception($errMsg) { echo '
' . $errMsg . '
'; } } require_once 'config.php'; $PdoMySQL = new PdoMYSQL(); //var_dump($PdoMySQL);//object(PdoMYSQL)[1] $sql = 'select * from user1'; print_r($PdoMySQL::getAll($sql));

config.php


Paste_Image.png
[PDO]①⑨--执行SQL语句_第1张图片
Paste_Image.png

你可能感兴趣的:([PDO]①⑨--执行SQL语句)