通用mysql教程數據庫教程連接類代碼
數據庫連接是一種有限的昂貴的資源,數據庫連接影響到程序的性能指標。數據庫連接池正是針對這個問題提出來的。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而再不是重新建立一個;釋放空閒時間超過最大空閒時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏。這項技術能明顯提高對數據庫操作的性能。
/*
* created on 2010-3-8
* make by:suniteboy
* my first mysql class
*
*/
class mysql{
private $server ="";
private $user ="";
private $pwd ="";
private $database ="";
private $linkmode = 1; //連接模式,0表示普通連接,1表示永久連接
private $conn = 0;
private $sql =""; //sql語句
private $result =""; //query查詢結果
private $record =""; //保存記錄
//============================================
// 構造函數
//============================================
public function __construct($server,$user,$pwd,$database,$charset="utf8",$linkmode=0)
{
if(empty ( $server )| empty( $user ) | empty( $database ))
{
$this->show_error("連接信息不完整,請檢查是否提供了服務器地址,用戶名以及連接的數據庫信息");
return 0;
}
$this->server = $server;
$this->user = $user;
$this->pwd = $pwd;
$this->database = $database;
$this->charset = $charset;
$this->linkmode = $linkmode;
$this->connect();
}
//============================================
// 連接函數
//============================================
public function connect()
{
$this->conn = $this->linkmode?mysql_pconnect($this->server,$this->user,$this->pwd):
mysql_connect($this->server,$this->user,$this->pwd);
if(!$this->conn)
{
$this->show_error('無法連接服務器');
return 0;
}
if(!mysql_select_db($this->database))
{
$this->show_error('無法連接數據庫'.$this->database);
return 0;
}
// $this->query('set names '.$this->charset);
return $this->conn;
}
//============================================
// mysql查詢函數
//============================================
public function query($sql)
{
if(empty($sql))
{
$this->show_error('sql語句為空');
return 0;
}
$this->sql = preg_replace('/ {2,}/',' ',trim($sql));
$this->result = mysql_query($this->sql,$this->conn);
if(!$this->result)
{
$this->show_error('sql語句錯誤',true);
return 0;
}
return $this->result;
}
//============================================
// 函數
//============================================
public function select_db($dbname)
{
return mysql_select_db($dbname);
}
public function fetch_array($query,$result_type=mysql_assoc)
{
return mysql_fetch_array($query,$result_type);
}
public function fetch_row($query)
{
return mysql_fetch_row($query);
}
//============================================
// 取得前一次mysql操作所影響到的記錄行數
//============================================
public function affected_rows()
{
return mysql_affected_rows();
}
public function num_fields($query)
{
return mysql_num_fields($query);
}
public function num_rows($query)
{
return @mysql_num_rows($query);
}
public function insert_id()
{
return mysql_insert_id();
}
public function close()
{
return mysql_close();
}
//============================================
// 從記錄中取出一條結果
//============================================
public function getone($sql)
{
$res = $this->query($sql);
if($res!==false)
{
$row = mysql_fetch_row($res);
if($row!==false)
{
return $row;
}
else
{
return '';
}
}
else
{
return false;
}
}
//============================================
// 從記錄中取出所有結果
//============================================
public function getall($sql)
{
$res = $this->query($sql);
if($res!==false)
{
$arr = array();
while($row = mysql_fetch_assoc($res))
{
$arr[] = $row;
}
return $arr;
}
else
{
return false;
}
}
//============================================
// 錯誤提示函數
//============================================
public function show_error($msg='',$sql=false)
{
$err = '['.mysql_errno().']'.mysql_error();
if($sql) $sql='sql語句:'.$this->sql;
if($msg=='')
{
echo $err;
echo "</br>";
}
elseif($sql &&$msg)
{
echo $msg;
echo "</br>";
echo $sql;
}
else
{
echo $msg;
echo "</br>";
}
}
}