您好,登錄后才能下訂單哦!
這篇文章主要介紹了php封裝的數據庫函數怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
具體如下:
從Thinkphp里面抽離出來的數據庫模塊,感覺挺好用
common.php:
<?PHP /** * 通用函數 */ //包含配置文件 if (is_file("config.php")) { C(include 'config.php'); } if (!function_exists("__autoload")) { function __autoload($class_name) { require_once('classes/' . $class_name . '.class.php'); } } /** * 數據庫操作函數 * @return \mysqli */ function M() { $db = new Model(); if (mysqli_connect_errno()) throw_exception(mysqli_connect_error()); return $db; } // 獲取配置值 function C($name = null, $value = null) { //靜態全局變量,后面的使用取值都是在 $)config數組取 static $_config = array(); // 無參數時獲取所有 if (empty($name)) return $_config; // 優先執行設置獲取或賦值 if (is_string($name)) { if (!strpos($name, '.')) { $name = strtolower($name); if (is_null($value)) return isset($_config[$name]) ? $_config[$name] : null; $_config[$name] = $value; return; } // 二維數組設置和獲取支持 $name = explode('.', $name); $name[0] = strtolower($name[0]); if (is_null($value)) return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null; $_config[$name[0]][$name[1]] = $value; return; } // 批量設置 if (is_array($name)) { return $_config = array_merge($_config, array_change_key_case($name)); } return null; // 避免非法參數 } function ajaxReturn($data = null, $message = "", $status) { $ret = array(); $ret["data"] = $data; $ret["message"] = $message; $ret["status"] = $status; echo json_encode($ret); die(); } //調試數組 function _dump($var) { if (C("debug")) dump($var); } // 瀏覽器友好的變量輸出 function dump($var, $echo = true, $label = null, $strict = true) { $label = ($label === null) ? '' : rtrim($label) . ' '; if (!$strict) { if (ini_get('html_errors')) { $output = print_r($var, true); $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>'; } else { $output = $label . print_r($var, true); } } else { ob_start(); var_dump($var); $output = ob_get_clean(); if (!extension_loaded('xdebug')) { $output = preg_replace("/\]\=\>\n(\s+)/m", '] => ', $output); $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>'; } } if ($echo) { echo($output); return null; } else return $output; } /** * 調試輸出 * @param type $msg */ function _debug($msg) { if (C("debug")) echo "$msg<br />"; } function _log($filename, $msg) { $time = date("Y-m-d H:i:s"); $msg = "[$time]\n$msg\r\n"; if (C("log")) { $fd = fopen($filename, "a+"); fwrite($fd, $msg); fclose($fd); } } /** * 日志記錄 * @param type $str */ function L($msg) { $time = date("Y-m-d H:i:s"); $clientIP = $_SERVER['REMOTE_ADDR']; $msg = "[$time $clientIP] $msg\r\n"; $log_file = C("LOGFILE"); _log($log_file, $msg); } ?>
config.php:
<?php /** * 數據庫配置文件 */ $db = array( 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'DB', 'DB_USER' => 'USER', 'DB_PWD' => 'PWD', 'DB_PORT' => '3306', ); return $db; ?>
數據庫模型類Model.class.php,放到classes/目錄下:
<?php /** * 數據庫模型類 */ class Model { // 數據庫連接ID 支持多個連接 protected $linkID = array(); // 當前數據庫操作對象 protected $db = null; // 當前查詢ID protected $queryID = null; // 當前SQL指令 protected $queryStr = ''; // 是否已經連接數據庫 protected $connected = false; // 返回或者影響記錄數 protected $numRows = 0; // 返回字段數 protected $numCols = 0; // 最近錯誤信息 protected $error = ''; public function __construct() { $this->db = $this->connect(); } /** * 連接數據庫方法 */ public function connect($config = '', $linkNum = 0) { if (!isset($this->linkID[$linkNum])) { if (empty($config)) $config = array( 'username' => C('DB_USER'), 'password' => C('DB_PWD'), 'hostname' => C('DB_HOST'), 'hostport' => C('DB_PORT'), 'database' => C('DB_NAME') ); $this->linkID[$linkNum] = new mysqli($config['hostname'], $config['username'], $config['password'], $config['database'], $config['hostport'] ? intval($config['hostport']) : 3306); if (mysqli_connect_errno()) throw_exception(mysqli_connect_error()); $this->connected = true; } return $this->linkID[$linkNum]; } /** * 初始化數據庫連接 */ protected function initConnect() { if (!$this->connected) { $this->db = $this->connect(); } } /** * 獲得所有的查詢數據 * @access private * @param string $sql sql語句 * @return array */ public function select($sql) { $this->initConnect(); if (!$this->db) return false; $query = $this->db->query($sql); $list = array(); if (!$query) return $list; while ($rows = $query->fetch_assoc()) { $list[] = $rows; } return $list; } /** * 只查詢一條數據 */ public function find($sql) { $resultSet = $this->select($sql); if (false === $resultSet) { return false; } if (empty($resultSet)) {// 查詢結果為空 return null; } $data = $resultSet[0]; return $data; } /** * 獲取一條記錄的某個字段值 , sql 由自己組織 * 例子: $model->getField("select id from user limit 1") */ public function getField($sql) { $resultSet = $this->select($sql); if (!empty($resultSet)) { return reset($resultSet[0]); } } /** * 執行查詢 返回數據集 */ public function query($str) { $this->initConnect(); if (!$this->db) { if (C("debug")) echo "connect to database error"; return false; } $this->queryStr = $str; //釋放前次的查詢結果 if ($this->queryID) $this->free(); $this->queryID = $this->db->query($str); // 對存儲過程改進 if ($this->db->more_results()) { while (($res = $this->db->next_result()) != NULL) { $res->free_result(); } } //$this->debug(); if (false === $this->queryID) { echo $this->error(); return false; } else { $this->numRows = $this->queryID->num_rows; $this->numCols = $this->queryID->field_count; return $this->getAll(); } } /** * 執行語句 , 例如插入,更新操作 * @access public * @param string $str sql指令 * @return integer */ public function execute($str) { $this->initConnect(); if (!$this->db) return false; $this->queryStr = $str; //釋放前次的查詢結果 if ($this->queryID) $this->free(); $result = $this->db->query($str); if (false === $result) { $this->error(); return false; } else { $this->numRows = $this->db->affected_rows; $this->lastInsID = $this->db->insert_id; return $this->numRows; } } /** * 獲得所有的查詢數據 * @access private * @param string $sql sql語句 * @return array */ private function getAll() { //返回數據集 $result = array(); if ($this->numRows > 0) { //返回數據集 for ($i = 0; $i < $this->numRows; $i++) { $result[$i] = $this->queryID->fetch_assoc(); } $this->queryID->data_seek(0); } return $result; } /** * 返回最后插入的ID */ public function getLastInsID() { return $this->db->insert_id; } // 返回最后執行的sql語句 public function _sql() { return $this->queryStr; } /** * 數據庫錯誤信息 */ public function error() { $this->error = $this->db->errno . ':' . $this->db->error; if ('' != $this->queryStr) { $this->error .= "\n [ SQL語句 ] : " . $this->queryStr; } //trace($this->error, '', 'ERR'); return $this->error; } /** * 釋放查詢結果 */ public function free() { $this->queryID->free_result(); $this->queryID = null; } /** * 關閉數據庫 */ public function close() { if ($this->db) { $this->db->close(); } $this->db = null; } /** * 析構方法 */ public function __destruct() { if ($this->queryID) { $this->free(); } // 關閉連接 $this->close(); } }
例子:
#include "common.php" function test(){ $model = M(); $sql = "select * from test"; $list = $model->query($sql); _dump($list); }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“php封裝的數據庫函數怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。