PHP開發知識總結:PHP+MYSQL數據處理專題

包括:MYSQL數據訪問,備份,恢復三個方面

一,MYSQL數據庫訪問封裝類:
參考discuz 6.1和一些網上資源,自己簡化封裝了一下,在php5+mysql5上測試通過,附件有完整的代碼.

<?php
/*
MYSQL 數據庫訪問封裝類
MYSQL 數據訪問方式,php4支持以mysql_開頭的過程訪問方式,php5開始支持以mysqli_開頭的過程和mysqli面向對象
訪問方式,本封裝類以mysql_封裝

數據訪問的一般流程:
1,連接數據庫 mysql_connect or mysql_pconnect
2,選擇數據庫 mysql_select_db
3,執行SQL查詢 mysql_query
4,處理返回的數據 mysql_fetch_array mysql_num_rows mysql_fetch_assoc mysql_fetch_row etc
*/

class db_mysql
{
  var $querynum = 0 ; //當前頁面進程查詢數據庫的次數
  var $dblink ;       //數據庫連接資源
 
  //鏈接數據庫
  function connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0 , $halt=true)
  {
     $func = empty($pconnect) ? 'mysql_connect' : 'mysql_pconnect' ;
     $this->dblink = @$func($dbhost,$dbuser,$dbpw) ;
     if ($halt && !$this->dblink)
     {
        $this->halt("無法鏈接數據庫!");
     }
    
     //設置查詢字符集
     mysql_query("SET character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this->dblink) ;
    
     //選擇數據庫
     $dbname && @mysql_select_db($dbname,$this->dblink) ;
  }
 
  //選擇數據庫
  function select_db($dbname)
  {
     return mysql_select_db($dbname,$this->dblink);
  }
 
  //執行SQL查詢
  function query($sql)
  {
     $this->querynum++ ;
     return mysql_query($sql,$this->dblink) ;
  }
 
  //返回最近一次與連接句柄關聯的INSERT,UPDATE 或DELETE 查詢所影響的記錄行數
  function affected_rows()
  {
     return mysql_affected_rows($this->dblink) ;
  }
 
  //取得結果集中行的數目,只對select查詢的結果集有效
  function num_rows($result)
  {
     return mysql_num_rows($result) ;
  }
 
  //獲得單格的查詢結果
  function result($result,$row=0)
  {
     return mysql_result($result,$row) ;
  }
 
  //取得上一步 INSERT 操作產生的 ID,只對表有AUTO_INCREMENT ID的操作有效
  function insert_id()
  {
     return ($id = mysql_insert_id($this->dblink)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
  }
 
  //從結果集提取當前行,以數字爲key表示的關聯數組形式返回
  function fetch_row($result)
  {
     return mysql_fetch_row($result) ;
  }
 
  //從結果集提取當前行,以字段名爲key表示的關聯數組形式返回
  function fetch_assoc($result)
  {
     return mysql_fetch_assoc($result);
  }
 
  //從結果集提取當前行,以字段名和數字爲key表示的關聯數組形式返回
  function fetch_array($result)
  {
     return mysql_fetch_array($result);
  }
 
  //關閉鏈接
  function close()
  {
     return mysql_close($this->dblink) ;
  }
 
  //輸出簡單的錯誤html提示信息並終止程序
  function halt($msg)
  {
     $message = "<html>\n<head>\n" ;
     $message .= "<meta content='text/html;charset=gb2312'>\n" ;
     $message .= "</head>\n" ;
     $message .= "<body>\n" ;
     $message .= "數據庫出錯:".htmlspecialchars($msg)."\n" ;
     $message .= "</body>\n" ;
     $message .= "</html>" ;
    
     echo $message ;
     exit ;
  }
}
?>

二,MYSQL數據庫備份,優化,恢復
  1,獲得指定數據庫的所有表名稱或表狀態信息 show tables , show table status
  2,獲得指定表的結構信息 describe tablename , SHOW INDEX from tablename , show create table tablename
  3,優化數據表 optimize table tablename
  4,生成insert or replace的sql
  5,恢復數據庫就是執行生成的備份SQL了

先整理一些有用的資源:

[收藏]一個數據庫類

mysql分卷備份程序

PHP 16: MySql的數據庫訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章