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

首頁 > 語言 > PHP > 正文

php封裝的數據庫函數與用法示例【參考thinkPHP】

2024-05-04 23:51:59
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 吴桥县| 南漳县| 玉溪市| 巫溪县| 文安县| 江安县| 五台县| 内黄县| 介休市| 平江县| 双峰县| 辽宁省| 册亨县| 镇原县| 巴楚县| 八宿县| 海口市| 扬中市| 文水县| 成安县| 丹棱县| 镇赉县| 南部县| 鄯善县| 菏泽市| 临高县| 天柱县| 延庆县| 平遥县| 徐汇区| 仙桃市| 武宣县| 抚顺县| 突泉县| 澜沧| 北流市| 东辽县| 普兰店市| 芮城县| 卢湾区| 鹤岗市|