<?php
class mysql
{
var $host = ""; //mysql主機名
var $user = ""; //mysql用戶名
var $pwd = ""; //mysql密碼
var $dbName = ""; //mysql數據庫名稱
var $linkID = 0; //用來保存連接ID
var $queryID = 0; //用來保存查詢ID
var $fetchMode= MYSQL_ASSOC;//取記錄時的模式
var $queryTimes = 0; //保存查詢的次數
var $errno = 0; //mysql出錯代號
var $error = ""; //mysql出錯信息
var $record = array(); //一條記錄數組
//======================================
// 函數: mysql()
// 功能: 構造函數
// 參數: 參數類的變量定義
// 說明: 構造函數將自動連接數據庫
// 如果想手動連接去掉連接函數
//======================================
function mysql($host,$user,$pwd,$dbName)
{ if(empty($host) || empty($user) || empty($dbName))
$this->halt("數據庫主機地址,用戶名或數據庫名稱不完全,請檢查!");
$this->host = $host;
$this->user = $user;
$this->pwd = $pwd;
$this->dbName = $dbName;
$this->connect();//設置為自動連接
}
//======================================
// 函數: connect($host,$user,$pwd,$dbName)
// 功能: 連接數據庫
// 參數: $host 主機名, $user 用戶名
// 參數: $pwd 密碼, $dbName 數據庫名稱
// 返回: 0:失敗
// 說明: 默認使用類中變量的初始值
//======================================
function connect($host = "", $user = "", $pwd = "", $dbName = "")
{
if ("" == $host)
$host = $this->host;
if ("" == $user)
$user = $this->user;
if ("" == $pwd)
$pwd = $this->pwd;
if ("" == $dbName)
$dbName = $this->dbName;
//now connect to the database
$this->linkID = mysql_pconnect($host, $user, $pwd);
if (!$this->linkID)
{
$this->halt();
return 0;
}
if (!mysql_select_db($dbName, $this->linkID))
{
$this->halt();
return 0;
}
return $this->linkID;
}
//======================================
// 函數: query($sql)
// 功能: 數據查詢
// 參數: $sql 要查詢的SQL語句
// 返回: 0:失敗
//======================================
function query($sql)
{
$this->queryTimes++;
$this->queryID = mysql_query($sql, $this->linkID);
if (!$this->queryID)
{
$this->halt();
return 0;
}
return $this->queryID;
}
//======================================
// 函數: setFetchMode($mode)
// 功能: 設置取得記錄的模式
// 參數: $mode 模式 MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH
// 返回: 0:失敗
//======================================
function setFetchMode($mode)
{
if ($mode == MYSQL_ASSOC || $mode == MYSQL_NUM || $mode == MYSQL_BOTH)
{
$this->fetchMode = $mode;
return 1;
}
else
{
$this->halt("錯誤的模式.");
return 0;
}
}
//======================================
// 函數: fetchRow()
// 功能: 從記錄集中取出一條記錄
// 返回: 0: 出錯 record: 一條記錄
//======================================
function fetchRow()
{
$this->record = mysql_fetch_array($this->queryID,$this->fetchMode);
return $this->record;
}
//======================================
// 函數: fetchAll()
// 功能: 從記錄集中取出所有記錄
// 返回: 記錄集數組
//======================================
function fetchAll()
{
$arr = array();
while($this->record = mysql_fetch_array($this->queryID,$this->fetchMode))
{
$arr[] = $this->record;
}
mysql_free_result($this->queryID);
return $arr;
}
//======================================
// 函數: getValue()
// 功能: 返回記錄中指定字段的數據
// 參數: $field 字段名或字段索引
// 返回: 指定字段的值
//======================================
function getValue($field)
{
return $this->record[$field];
}
//======================================
// 函數: affectedRows()
// 功能: 返回影響的記錄數
//======================================
function affectedRows()
{
return mysql_affected_rows($this->linkID);
}
//======================================
// 函數: recordCount()
// 功能: 返回查詢記錄的總數
// 參數: 無
// 返回: 記錄總數
//======================================
function recordCount()
{
return mysql_num_rows($this->queryID);
}
//======================================
// 函數: getQueryTimes()
// 功能: 返回查詢的次數
// 參數: 無
// 返回: 查詢的次數
//======================================
function getQueryTimes()
{
return $this->queryTimes;
}
//======================================
// 函數: getVersion()
// 功能: 返回mysql的版本
// 參數: 無
//======================================
function getVersion()
{
$this->query("select version() as ver");
$this->fetchRow();
return $this->getValue("ver");
}
//======================================
// 函數: getDBSize($dbName, $tblPrefix=null)
// 功能: 返回數據庫占用空間大小
// 參數: $dbName 數據庫名
// 參數: $tblPrefix 表的前綴,可選
//======================================
function getDBSize($dbName, $tblPrefix=null)
{
$sql = "SHOW TABLE STATUS FROM " . $dbName;
if($tblPrefix != null) {
$sql .= " LIKE '$tblPrefix%'";
}
$this->query($sql);
$size = 0;
while($this->fetchRow())
$size += $this->getValue("Data_length") + $this->getValue("Index_length");
return $size;
}
//======================================
// 函數: insertID()
// 功能: 返回最後一次插入的自增ID
// 參數: 無
//======================================
function insertID() {
return mysql_insert_id();
}
//======================================
// 函數: halt($err_msg)
// 功能: 處理所有出錯信息
// 參數: $err_msg 自定義的出錯信息
//=====================================
function halt($err_msg="")
{
if ("" == $err_msg)
{
$this->errno = mysql_errno();
$this->error = mysql_error();
echo "<b>mysql error:<b><br>";
echo $this->errno.":".$this->error."<br>";
exit;
}
else
{
echo "<b>mysql error:<b><br>";
echo $err_msg."<br>";
exit;
}
}
}
?>