天天看點

php通路mysql 封裝

<?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 ;

}

?>