摘要:數(shù)據(jù)庫抽象層實現(xiàn)已廢棄數(shù)據(jù)庫類,實現(xiàn)接口王扶林王扶林數(shù)據(jù)庫連接標識數(shù)據(jù)庫查詢結(jié)果集插入語句最后執(zhí)行的最后自增索引值待判斷的數(shù)組若數(shù)組為關(guān)聯(lián)數(shù)組,返回,否則返回傳入的數(shù)據(jù)庫的名稱可選參數(shù),默認為數(shù)據(jù)庫傳入的數(shù)據(jù)庫的服務器地址可選參數(shù),默
數(shù)據(jù)庫抽象層實現(xiàn) mysql_connect (已廢棄)
_dbConnect = @mysql_connect($dbhost, $dduser, $dbpwd); //連接數(shù)據(jù)庫 if (false == $this->_dbConnect) { throw new Exception("數(shù)據(jù)庫連接錯誤".mysql_error()); } //選擇數(shù)據(jù)庫 if (!@mysql_select_db($dbname,$this->_dbConnect)) { throw new Exception("數(shù)據(jù)庫選擇錯誤" . mysql_error()); } //設置字符編碼 $this->setCharset(); } /** * __destruct * *析構(gòu)函數(shù),釋放結(jié)果集資源 *@return nulll * */ public function __destruct(){ //釋放結(jié)果集 $this->freeResult(); //關(guān)閉數(shù)據(jù)庫連接 if ($this->_dbConnect) { mysql_close($this->_dbConnect); } } /** * select * * 獲得數(shù)據(jù)表中所有滿足特定條件的記錄 * * @param string $tableName 必要參數(shù),待查詢的數(shù)據(jù)表 * @param array $condition 查詢條件(可選參數(shù),為一關(guān)聯(lián)數(shù)組,默認為null ) * @param int $recordBegin 從某項記錄開始查詢(可選參數(shù),默認情況為0,從第一條記錄開始查詢) * @param int $recordLength 待查詢記錄的個數(shù)(可選參數(shù),默認情況為所有記錄) * @param string $sortCol 待排序的字段名(可選參數(shù),默認情況為不排序) * @param boolean $desc 是否為降序排序(可選參數(shù),默認為升序排序) * @return array 有結(jié)果集組成的二維數(shù)組(每個元素為關(guān)聯(lián)數(shù)組,代表一條記錄) */ public function select($tableName, Array $condition = null, $recordBegin = 0,$recordLength = 0,$sortCol = null, $desc = false) { //構(gòu)造SQL 語句 $sql = "SELECT * FROM {$tableName}"; //傳入的條件參數(shù)為真并且是關(guān)聯(lián)數(shù)組 if ($condition) { if (!self::isAssocArray($condition)) { //若不是關(guān)聯(lián)數(shù)組 throw new Exception("必須傳入一個關(guān)聯(lián)數(shù)組的條件"); }else{ //遍歷條件數(shù)組,構(gòu)造條件語句 $sql .= $this->generateWhere($condition); } } //處理是否排序 if ($sortCol) { $sql .= " ORDER BY {$sortCol}"; } //處理是否降序 if ($desc) { $sql .= " DESC"; } //處理記錄的個數(shù) (若處理的記錄個數(shù)不為 0) if (0 != $recordLength) { $sql .= " limit {$recordBegin} ,{$recordLength}"; }else if(0 != $recordBegin){ $sql .= " limit {$recordBegin}"; } //執(zhí)行SQL 語句 $this->_result = @mysql_query($sql); if (!$this->_result) { throw new Exception("執(zhí)行SQL語句出錯". mysql_error()); } //獲得查詢結(jié)果 $rows = array(); while ($row = mysql_fetch_assoc($this->_result)) { $rows[] = $row; } //釋放結(jié)果集 $this->freeResult(); //返回結(jié)果集組成的關(guān)聯(lián)數(shù)組 return $rows; } public function delete($tableName ,Array $condition) { //構(gòu)造SQL語句 $query = "DELETE FROM {$tableName} "; //由條件數(shù)組,構(gòu)造刪除條件 if (!self::isAssocArray($condition)) { //若不是關(guān)聯(lián)數(shù)組 throw new Exception("必須傳入一個關(guān)聯(lián)數(shù)組的條件"); }else{ $query .= $this->generateWhere($condition); } //執(zhí)行SQL語句 $result = @mysql_query($query); if (!$this->_result) { throw new Exception("執(zhí)行SQL語句出錯".mysql_error()); } //返回受影響個數(shù) return mysql_affected_rows(); } /** * insert() * @param string $tableName 待插入的數(shù)據(jù)表名 * @param Array $records 帶插入的記錄所組成的二維數(shù)組 * @return int 所受影響的行數(shù) */ public function insert($tableName, Array $records) { //構(gòu)造SQL語句 $query = "INSERT INTO {$tableName} VALUES"; //待處理插入的記錄數(shù)組 $query .= " ("; foreach($records as $red){ //處理每一條插入記錄 //生成記錄信息 foreach($red as $value){ if (is_string($value) && $value !== "null" && $value !== "now()" ) { $query .= ""{$value}","; }else{ $query .= "{$value}, "; } } //除去value的最后 字符連接 , $query = rtrim($query, ","); //數(shù)據(jù)項SQL 語句的閉合 $query .= "), ("; } $query .= ")"; $query = rtrim(rtrim(rtrim($query, "()")), ","); //echo $query; //echo "
"; //執(zhí)行SQL 語句 $this->_result = @mysql_query($query); if(!$this->_result){ throw new Exception("插入SQL 語句出錯". mysql_error()); } //獲得插入記錄的最大自增索引 $this->insertId = @mysql_insert_id(); //返回受影響的個數(shù) return mysql_affected_rows(); } public function update($tableName,Array $condition, Array $newRecord) { //構(gòu)造SQL語句 $query = "UPDATE {$tableName} SET "; // if (!self :: isAssocArray($newRecord)) { throw new Exception("記錄的新值必須傳入一個關(guān)聯(lián)數(shù)組的條件"); } else { //生成記錄信息 foreach ($newRecord as $key => $value) { $nKey = " {$key} = "; if (is_string($value) && ($value !== "null") && ($value !== "now()")) { //若$value為字符串 $nKey .= ""{$value}","; } else { $nKey .= "{$value},"; } } $nKey = rtrim($nKey, ","); $query .= $nKey; } //由傳入的條件數(shù)組,構(gòu)造更新條件 if (!self :: isAssocArray($condition)){ //若不為關(guān)聯(lián)數(shù)組 throw new Exception("必須傳入一個關(guān)聯(lián)數(shù)組的條件"); } else { $query .= $this->generWhere($condition); } //執(zhí)行SQL語句 $result = @mysql_query($query); if (!$this->_result) { throw new Exception("執(zhí)行SQL語句出錯." . mysql_error()); } //返回受影響個數(shù) return mysql_affected_rows(); } /** * selectAll() * * 獲得數(shù)據(jù)表中的所有記錄的所有字段 * * @param string $tableName 待查詢的數(shù)據(jù)表名 * @return array 所有記錄組成的一個二維數(shù)組(每個元素為一個關(guān)聯(lián)數(shù)組,代表一條記錄) */ public function selectAll($tableName) { return $this->select($tableName); } /** * selectById * * 通過主鍵獲得某一條記錄,主鍵由可選參數(shù)傳入 * * @param string $tableName 數(shù)據(jù)表名 * @param integer $id 獲得記錄的主鍵ID值 (可選參數(shù)默認值ID為1) * @param string $key 主鍵的字段名(可選參數(shù),默認為ID) * @return array 所獲得記錄產(chǎn)生的關(guān)聯(lián)數(shù)組 */ public function selectById($tableName, $id = 1,$key = "id") { //構(gòu)造query語句 $query = "SELECT * FROM {$tableName} WHERE {$key} = {$id}"; //執(zhí)行SQL 語句 $this->_result = @mysql_query($query); if (!$this->_result) { throw new Exception("執(zhí)行主鍵查詢出錯".mysql_error()); } //獲得查詢結(jié)果 if (1 != @mysql_num_rows($this->_result)) { throw new Exception("主鍵記錄查詢出現(xiàn)多條" . mysql_error()); } $rows = mysql_fetch_assoc($this->_result); //釋放結(jié)果集 $this->freeResult(); //返回結(jié)果集組成的關(guān)聯(lián)數(shù)組 return $rows; } /** * selectBySql() * * 通過傳入的SQL語句,獲得查詢結(jié)果 * * @param string $query 待查詢的SQL語句 * @return array $rows 所有記錄組成的一個二維數(shù)組(每個元素為關(guān)聯(lián)數(shù)組,代表一條記錄) */ public function selectBySql($query) { //執(zhí)行SQL語句 $this->_result = @mysql_query($query); if (!$this->_result) { throw new Exception("執(zhí)行SQL語句出錯." . mysql_error()); } //獲得查詢結(jié)果 $rows = array(); while ($row = mysql_fetch_assoc($this->_result)) { $rows[] = $row; } //釋放結(jié)果集 $this->freeResult(); //返回結(jié)果集組成的關(guān)聯(lián)數(shù)組 return $rows; } /** * setCharset * * 設置Mysql數(shù)據(jù)庫顯示字符編碼,由傳入?yún)?shù)決定字符編碼 * * @param string $charset 待設置的字符編碼(可選參數(shù),默認為UTF8) * @return null 無 */ private function setCharset($charset = "UTF-8") { if ($this->_dbConnect) { mysql_query("set names {$charset}",$this->_dbConnect); } } /** * generateWhere() *由傳入的條件數(shù)組,構(gòu)造where子句 * * @param Array $condition 由條件語句組成的關(guān)聯(lián)數(shù)組的 * @return string 構(gòu)造生成的Where語句字符串 */ private function generateWhere(Array $condition) { $con = "WHERE"; foreach($condition as $key => $value){ if (is_string($value)) { $con .= "{$key} = "{$value}" and"; }else{ $con .= "{$key} = {$value}"; } } $con = rtrim($con ,"and"); return $con; } /** * freeResult * * 釋放MySQL結(jié)果集資源 * * @param null 無 * @return null 無 */ public function freeResult() { if ($this->_result) { if (!@mysql_free_result($this->_result)) { throw new Exception("釋放結(jié)果集出錯" . mysql_error()); } $this->_result = null; } } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/22790.html
摘要:數(shù)據(jù)庫抽象層面實現(xiàn)已廢棄抽象類數(shù)據(jù)庫接口王扶林王扶林獲取某一條的記錄數(shù)據(jù)表名待獲得記錄的主鍵值可選參數(shù)默認獲得為的記錄主鍵字段名可選參數(shù),默認值為有賦值的主鍵獲得記錄的各個字段組成的條數(shù)據(jù)項關(guān)聯(lián)數(shù)組獲得數(shù)據(jù)表中的所有滿足特定條件的記錄必 數(shù)據(jù)庫抽象層面 mysql_connect 實現(xiàn) (已廢棄)
摘要:什么是里氏替換原則某個對象實例的子類實例應當可以在不影響程序正確性的基礎上替換它們。除了在編程語言層面,在前端實際工作中,你可能會聽到一個叫作的概念,這個概念我認為也是里氏替換原則的一直延伸。 這是理解SOLID原則,關(guān)于里氏替換原則為什么提倡我們面向抽象層編程而不是具體實現(xiàn)層,以及為什么這樣可以使代碼更具維護性和復用性。 什么是里氏替換原則 Objects should be rep...
閱讀 768·2021-09-26 09:55
閱讀 2058·2021-09-22 15:44
閱讀 1473·2019-08-30 15:54
閱讀 1325·2019-08-30 15:54
閱讀 2669·2019-08-29 16:57
閱讀 518·2019-08-29 16:26
閱讀 2491·2019-08-29 15:38
閱讀 2122·2019-08-26 11:48