程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 完整的PHP MYSQL數據庫類

完整的PHP MYSQL數據庫類

編輯:PHP綜合
<?php class mysql {     private $db_host; //數據庫主機     private $db_user; //數據庫用戶名     private $db_pwd; //數據庫用戶名密碼     private $db_database; //數據庫名     private $conn; //數據庫連接標識;     private $result; //執行query命令的結果資源標識     private $sql; //sql執行語句     private $row; //返回的條目數     private $coding; //數據庫編碼,GBK,UTF8,gb2312     private $bulletin = true; //是否開啟錯誤記錄     private $show_error = false; //測試階段,顯示所有錯誤,具有安全隱患,默認關閉     private $is_error = false; //發現錯誤是否立即終止,默認true,建議不啟用,因為當有問題時用戶什麼也看不到是很苦惱的       /*構造函數*/     public function __construct($db_host, $db_user, $db_pwd, $db_database, $conn, $coding) {         $this->db_host = $db_host;         $this->db_user = $db_user;         $this->db_pwd = $db_pwd;         $this->db_database = $db_database;         $this->conn = $conn;         $this->coding = $coding;         $this->connect();     }       /*數據庫連接*/     public function connect() {         if ($this->conn == "pconn") {             //永久鏈接             $this->conn = mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd);         } else {             //即使鏈接             $this->conn = mysql_connect($this->db_host, $this->db_user, $this->db_pwd);         }           if (!mysql_select_db($this->db_database, $this->conn)) {             if ($this->show_error) {                 $this->show_error("數據庫不可用:", $this->db_database);             }         }         mysql_query("SET NAMES $this->coding");     }       /*數據庫執行語句,可執行查詢添加修改刪除等任何sql語句*/     public function query($sql) {         if ($sql == "") {             $this->show_error("SQL語句錯誤:", "SQL查詢語句為空");         }         $this->sql = $sql;           $result = mysql_query($this->sql, $this->conn);           if (!$result) {             //調試中使用,sql語句出錯時會自動打印出來             if ($this->show_error) {                 $this->show_error("錯誤SQL語句:", $this->sql);             }         } else {             $this->result = $result;         }         return $this->result;     }       /*創建添加新的數據庫*/     public function create_database($database_name) {         $database = $database_name;         $sqlDatabase = 'create database ' . $database;         $this->query($sqlDatabase);     }       /*查詢服務器所有數據庫*/     //將系統數據庫與用戶數據庫分開,更直觀的顯示?     public function show_databases() {         $this->query("show databases");         echo "現有數據庫:" . $amount = $this->db_num_rows($rs);         echo "<br />";         $i = 1;         while ($row = $this->fetch_array($rs)) {             echo "$i $row[Database]";             echo "<br />";             $i++;         }     }       //以數組形式返回主機中所有數據庫名     public function databases() {         $rsPtr = mysql_list_dbs($this->conn);         $i = 0;         $cnt = mysql_num_rows($rsPtr);         while ($i < $cnt) {             $rs[] = mysql_db_name($rsPtr, $i);             $i++;         }         return $rs;     }       /*查詢數據庫下所有的表*/     public function show_tables($database_name) {         $this->query("show tables");         echo "現有數據庫:" . $amount = $this->db_num_rows($rs);         echo "<br />";         $i = 1;         while ($row = $this->fetch_array($rs)) {             $columnName = "Tables_in_" . $database_name;             echo "$i $row[$columnName]";             echo "<br />";             $i++;         }     }       /*     mysql_fetch_row()    array  $row[0],$row[1],$row[2]     mysql_fetch_array()  array  $row[0] 或 $row[id]     mysql_fetch_assoc()  array  用$row->content 字段大小寫敏感     mysql_fetch_object() object 用$row[id],$row[content] 字段大小寫敏感     */       /*取得結果數據*/     public function mysql_result_li() {         return mysql_result($str);     }       /*取得記錄集,獲取數組-索引和關聯,使用$row['content'] */     public function fetch_array($resultt="") {         if($resultt<>""){             return mysql_fetch_array($resultt);         }else{         return mysql_fetch_array($this->result);         }     }       //獲取關聯數組,使用$row['字段名']     public function fetch_assoc() {         return mysql_fetch_assoc($this->result);     }       //獲取數字索引數組,使用$row[0],$row[1],$row[2]     public function fetch_row() {         return mysql_fetch_row($this->result);     }       //獲取對象數組,使用$row->content     public function fetch_Object() {         return mysql_fetch_object($this->result);     }       //簡化查詢select     public function findall($table) {         $this->query("SELECT * FROM $table");     }       //簡化查詢select     public function select($table, $columnName = "*", $condition = '', $debug = '') {         $condition = $condition ? ' Where ' . $condition : NULL;         if ($debug) {             echo "SELECT $columnName FROM $table $condition";         } else {             $this->query("SELECT $columnName FROM $table $condition");         }     }       //簡化刪除del     public function delete($table, $condition, $url = '') {         if ($this->query("DELETE FROM $table WHERE $condition")) {             if (!empty ($url))                 $this->Get_admin_msg($url, '刪除成功!');         }     }       //簡化插入insert     public function insert($table, $columnName, $value, $url = '') {         if ($this->query("INSERT INTO $table ($columnName) VALUES ($value)")) {             if (!empty ($url))                 $this->Get_admin_msg($url, '添加成功!');         }     }       //簡化修改update     public function update($table, $mod_content, $condition, $url = '') {         //echo "UPDATE $table SET $mod_content WHERE $condition"; exit();         if ($this->query("UPDATE $table SET $mod_content WHERE $condition")) {             if (!empty ($url))                 $this->Get_admin_msg($url);         }     }       /*取得上一步 INSERT 操作產生的 ID*/     public function insert_id() {         return mysql_insert_id();     }       //指向確定的一條數據記錄     public function db_data_seek($id) {         if ($id > 0) {             $id = $id -1;         }         if (!@ mysql_data_seek($this->result, $id)) {             $this->show_error("SQL語句有誤:", "指定的數據為空");         }         return $this->result;     }       // 根據select查詢結果計算結果集條數     public function db_num_rows() {         if ($this->result == null) {             if ($this->show_error) {                 $this->show_error("SQL語句錯誤", "暫時為空,沒有任何內容!");             }         } else {             return mysql_num_rows($this->result);         }     }       // 根據insert,update,delete執行結果取得影響行數     public function db_affected_rows() {         return mysql_affected_rows();     }       //輸出顯示sql語句     public function show_error($message = "", $sql = "") {         if (!$sql) {             echo "<font color='red'>" . $message . "</font>";             echo "<br />";         } else {             echo "<fieldset>";             echo "<legend>錯誤信息提示:</legend><br />";             echo "<div style='font-size:14px; clear:both; font-family:Verdana, Arial, Helvetica, sans-serif;'>";             echo "<div style='height:20px; background:#000000; border:1px #000000 solid'>";             echo "<font color='white'>錯誤號:12142</font>";             echo "</div><br />";             echo "錯誤原因:" . mysql_error() . "<br /><br />";             echo "<div style='height:20px; background:#FF0000; border:1px #FF0000 solid'>";             echo "<font color='white'>" . $message . "</font>";             echo "</div>";             echo "<font color='red'><pre>" . $sql . "</pre></font>";             $ip = $this->getip();             if ($this->bulletin) {                 $time = date("Y-m-d H:i:s");                 $message = $message . "\r\n$this->sql" . "\r\n客戶IP:$ip" . "\r\n時間 :$time" . "\r\n\r\n";                   $server_date = date("Y-m-d");                 $filename = $server_date . ".txt";                 $file_path = "error/" . $filename;                 $error_content = $message;                 //$error_content="錯誤的數據庫,不可以鏈接";                 $file = "error"; //設置文件保存目錄                   //建立文件夾                 if (!file_exists($file)) {                     if (!mkdir($file, 0777)) {                         //默認的 mode 是 0777,意味著最大可能的訪問權                         die("upload files directory does not exist and creation failed");                     }                 }                   //建立txt日期文件                 if (!file_exists($file_path)) {                       //echo "建立日期文件";                     fopen($file_path, "w+");                       //首先要確定文件存在並且可寫                     if (is_writable($file_path)) {                         //使用添加模式打開$filename,文件指針將會在文件的開頭                         if (!$handle = fopen($file_path, 'a')) {                             echo "不能打開文件 $filename";                             exit;                         }                           //將$somecontent寫入到我們打開的文件中。                         if (!fwrite($handle, $error_content)) {                             echo "不能寫入到文件 $filename";                             exit;                         }                           //echo "文件 $filename 寫入成功";                           echo "——錯誤記錄被保存!";                           //關閉文件                         fclose($handle);                     } else {                         echo "文件 $filename 不可寫";                     }                   } else {                     //首先要確定文件存在並且可寫                     if (is_writable($file_path)) {                         //使用添加模式打開$filename,文件指針將會在文件的開頭                         if (!$handle = fopen($file_path, 'a')) {                             echo "不能打開文件 $filename";                             exit;                         }                           //將$somecontent寫入到我們打開的文件中。                         if (!fwrite($handle, $error_content)) {                             echo "不能寫入到文件 $filename";                             exit;                         }                           //echo "文件 $filename 寫入成功";                         echo "——錯誤記錄被保存!";                           //關閉文件                         fclose($handle);                     } else {                         echo "文件 $filename 不可寫";                     }                 }               }             echo "<br />";             if ($this->is_error) {                 exit;             }         }         echo "</div>";         echo "</fieldset>";           echo "<br />";     }       //釋放結果集     public function free() {         @ mysql_free_result($this->result);     }       //數據庫選擇     public function select_db($db_database) {         return mysql_select_db($db_database);     }       //查詢字段數量     public function num_fields($table_name) {         //return mysql_num_fields($this->result);         $this->query("select * from $table_name");         echo "<br />";         echo "字段數:" . $total = mysql_num_fields($this->result);         echo "<pre>";         for ($i = 0; $i < $total; $i++) {             print_r(mysql_fetch_field($this->result, $i));         }         echo "</pre>";         echo "<br />";     }       //取得 MySQL 服務器信息     public function mysql_server($num = '') {         switch ($num) {             case 1 :                 return mysql_get_server_info(); //MySQL 服務器信息                 break;               case 2 :                 return mysql_get_host_info(); //取得 MySQL 主機信息                 break;               case 3 :                 return mysql_get_client_info(); //取得 MySQL 客戶端信息                 break;               case 4 :                 return mysql_get_proto_info(); //取得 MySQL 協議信息                 break;               default :                 return mysql_get_client_info(); //默認取得mysql版本信息         }     }       //析構函數,自動關閉數據庫,垃圾回收機制     public function __destruct() {         if (!empty ($this->result)) {             $this->free();         }         mysql_close($this->conn);     } //function __destruct();       /*獲得客戶端真實的IP地址*/     function getip() {         if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {             $ip = getenv("HTTP_CLIENT_IP");         } else             if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {                 $ip = getenv("HTTP_X_FORWARDED_FOR");             } else                 if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {                     $ip = getenv("REMOTE_ADDR");                 } else                     if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {                         $ip = $_SERVER['REMOTE_ADDR'];                     } else {                         $ip = "unknown";                     }         return ($ip);     }     function inject_check($sql_str) { //防止注入         $check = eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);         if ($check) {             echo "輸入非法注入內容!";             exit ();         } else {             return $sql_str;         }     }     function checkurl() { //檢查來路         if (preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) !== preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST'])) {             header("Location: http://hovertree.com");             exit();         }     }   } ?>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved