国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

封裝的PDO操作數(shù)據(jù)庫的幫助類MySqlHelper

2020-03-22 19:18:02
字體:
供稿:網(wǎng)友
  • 封裝的 PDO 操作數(shù)據(jù)庫 的幫助類 MySqlHelper

    封裝的 PDO 操作數(shù)據(jù)庫 的幫助類 MySqlHelper ,僅供學(xué)習交流使用!

    <?php/** * Description of MySqlHelper * * @author fx678 */ html' target='_blank'>class MySqlHelper {    private static $pdoDB = null;        public function __destruct() {        $this->pdoDB = null;    }            /**     * 獲取ini配置文件中PDO連接信息,并返回PDO對象     * $section: 數(shù)據(jù)庫配置節(jié)點     * 返回 PDO對象     **/    private static function getPdoDB($section ="db"){        if(self::$pdoDB !== null && !array_key_exists($section,array('dsn','username','password'))){            if(!array_key_exists($section,self::$pdoDB)){                return self::$pdoDB;            }        }                   $config = Config::getConfig($section);        try {            self::$pdoDB = new PDO(                    $config['dsn'],                     $config['username'],                     $config['password'],                     array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';")            );            } catch (Exception $ex) {            throw new Exception('DB connection error:'.$ex->getMessage());        }                return self::$pdoDB;    }            /**     * 執(zhí)行不帶參數(shù)的查詢語句     * $connectionString:數(shù)據(jù)庫配置信息節(jié)點     * $strSql:要執(zhí)行的T-sql 語句     * 返回 PDOStatement 對象     **/    public static function query($connectionString,$strSql){        try {           $statement = self::getPdoDB($connectionString)->query($strSql,PDO::FETCH_ASSOC);                      if($statement === false){               throw new Exception($this->getDB($connectionString)->errorInfo());           }        } catch (Exception $ex) {            throw new Execption($ex->getMessage());        }                return $statement;     }        /**     * 執(zhí)行帶參數(shù)的查詢語句     * $connectionString:數(shù)據(jù)庫配置信息節(jié)點     * $strSql:要執(zhí)行的T-sql 語句     * $paramArr:參數(shù)數(shù)組     * 返回 PDOStatement 對象     **/    public static function queryParam($connectionString,$strSql,$paramArr){        try {            $statement = self::getPdoDB($connectionString)->prepare($strSql);                        //獲取對應(yīng)參數(shù)            if(isset($paramArr) && is_array($paramArr)){                foreach ($paramArr as $key => $val) {                    $statement->bindParam("$key",$val[0],$val[1]);                }            }                        //執(zhí)行            $statement->execute();            } catch (Exception $ex) {            throw new Execption($ex->getMessage());        }                if($statement === false){            throw new Exception($this->getDB($connectionString)->errorInfo());        }                return $statement;    }            /**     * 執(zhí)行帶參數(shù)并使用事物機制的(增刪改)語句     * $connectionString:數(shù)據(jù)庫配置信息節(jié)點     * $strSql:要執(zhí)行的T-sql 語句     * $paramArr:參數(shù)數(shù)組     * 返回 返回受影響的行數(shù)(int)     **/    public static function prepareParamTransaction($connectionString,$strSql,$paramArr){        $count = 0;                try {            $pdo = self::getPdoDB($connectionString);            //關(guān)閉自動提交(默認為自動提交)            $pdo ->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);            //開啟異常處理            $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                         //開始事物            $pdo -> beginTransaction();                        //獲取 Statement 對象            $statement = $pdo->prepare($strSql);                                       //獲取對應(yīng)參數(shù)            if(isset($paramArr) && is_array($paramArr)){                  foreach ($paramArr as $key => $val) {                      $statement->bindParam("$key",$val[0],$val[1]);                  }            }                        //執(zhí)行            $statement -> execute();            $count = (int)($statement-> rowCount());                        //提交事物            $pdo -> commit();        } catch (Exception $ex){            throw new Execption($ex->getMessage());        }                if($statement === false){            throw new Exception($this->getPdoDB($connectionString)->errorInfo());        }                //返回受影響的行數(shù)        return $count;    }}?>
    調(diào)用參考示例1:

     $strSql = "SELECT * FROM NEWSINDEX n WHERE n.`Id`=:Id LIMIT 1;";                $paramArr = array(            ':Id' => array($Id,  PDO::PARAM_INT)        );                foreach (self::queryParam(self::$connectionString, $strSql, $paramArr) as $row) {            $model = new htNewsIndex();            HtNewsIndexMapper::map($model, $row);            return $model;        }                return null;
    調(diào)用參考示例2:
    $strSql = "INSERT INTO NEWS_INDEX(BSID,IDX_PERIOD,PREVIOUS_PRICE,ACTUAL_PRICE,REVISED_PRICE,SURVEY_PRICE,PUBLISH_TIME,CREATE_TIME,STATUS) "        . "VALUES(:BSId,:IdxPeriod,:PreviousPrice,:ActualPrice,:RevisedPrice,:SurveyPrice,:PublishTime,:CreateTime,:Status);";                //參數(shù)數(shù)組        $params = array(            ':BSId'           => array($model->getBSId(),PDO::PARAM_STR),            ':IdxPeriod'      => array($model->getIdxPeriod(),PDO::PARAM_STR),            ':PreviousPrice'  => array($model->getPreviousPrice(),PDO::PARAM_STR),            ':ActualPrice'    => array($model->getActualPrice(),PDO::PARAM_STR),            ':RevisedPrice'   => array($model->getRevisedPrice(),PDO::PARAM_STR),            ':SurveyPrice'    => array($model->getSurveyPrice(),PDO::PARAM_STR),            ':PublishTime'    => array($model->getPublishTime(),PDO::PARAM_STR),            ':CreateTime'     => array($model->getCreateTime(),PDO::PARAM_STR),            ':Status'         => array($model->getStatus(),PDO::PARAM_INT)        );                try {           return (int)self::prepareParamTransaction(self::$connectionString,$strSql,$params);        } catch (Exception $ex) {            throw new Exception($ex->getTraceAsString());        }

    由于認識有限,不足之處請多指教!
    在這個過程中,我發(fā)現(xiàn)使用 PDO 參數(shù)化模糊查詢,始終沒有結(jié)果,也沒有異常拋出,如下語句:

    SELECT * FROM NEWS n WHERE n.`Title` LIKE('%:key%');
    SELECT * FROM NEWS n WHERE n.`Title` LIKE('%?%');
    這種參數(shù)化的模糊查詢始終沒有結(jié)果。請知情者賜教!

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 博客| 鱼台县| 岳普湖县| 宁武县| 阿拉善右旗| 左贡县| 宜州市| 丁青县| 舟曲县| 武胜县| 宜宾县| 丽江市| 蚌埠市| 湟中县| 沈阳市| 广昌县| 蛟河市| 固镇县| 新安县| 淮安市| 益阳市| 楚雄市| 蒲江县| 万年县| 桂平市| 济阳县| 仙游县| 怀安县| 云龙县| 会东县| 西峡县| 霍林郭勒市| 盐边县| 万山特区| 白沙| 观塘区| 德化县| 晴隆县| 宁远县| 东莞市| 岫岩|