PHP封裝數據庫操作類

而PHP在訪問數據庫的時候又經常會出現各種問題,如字符編碼問題、SQL語法錯誤問題、PHP處理數據記錄對象和返回對象的問題等。下面內容由小編爲大家介紹PHP封裝數據庫操作類方法,供大家參考!

PHP封裝數據庫操作類

  優點:

  方便快捷, 數據庫操作只需調用接口;

統一編碼(utf8),不易導致亂碼

結構清晰. 如處理前端請求的`後臺程序() + 表封裝類() + 數據庫封裝類() + 配置信息()

以下例子有四個文件: + + + ,放在同一個目錄下。

首先是一個數據庫配置的文件類

/**

* 數據庫配置信息

*/

define('DB_HOST','localhost'); //服務

define('DB_USER','root'); //數據庫用戶名

define('DB_PASSWORD',''); //數據庫密碼

define('DB_NAME','test0'); //默認數據庫

define('DB_CHARSET','utf8'); //數據庫字符集

define('TIMEZONE',"PRC"); //時區設置

?>

接下來就是數據庫操作類

require_once("./"); //引入配置常量文件

date_default_timezone_set(TIMEZONE);

/**

* 類名:DB

* 說明:數據庫操作類

*/

class

DB

{

public

$host; //服務器

public

$username; //數據庫用戶名

public

$password; //數據密碼

public

$dbname; //數據庫名

public

$conn; //數據庫連接變量

/**

* DB類構造函數

*/

public

function DB($host=DB_HOST ,$username=DB_USER,$password=DB_PASSWORD,$dbname=DB_NAME)

{

$this->host = $host;

$this->username = $username;

$this->password = $password;

$this->dbname = $dbname;

}

/**

* 打開數據庫連接

*/

public

function open()

{

$this->conn = mysql_connect($this->host,$this->username,$this->password);

mysql_select_db($this->dbname);

mysql_query("SET CHARACTER SET utf8");

}

/**

* 關閉數據連接

*/

public

function close()

{

mysql_close($this->conn);

}

/**

* 通過sql語句獲取數據

* @return: array()

*/

public

function getObjListBySql($sql)

{

$this->open();

$rs

= mysql_query($sql,$this->conn);

$objList

= array();

while($obj

= mysql_fetch_object($rs))

{

if($obj)

{

$objList[] = $obj;

}

}

$this->close();

return

$objList;

}

/**

* 向數據庫表中插入數據

* @param:$table,表名

* @param:$columns,包含表中所有字段名的數組。默認空數組,則是全部有序字段名

* @param:$values,包含對應所有字段的屬性值的數組

*/

public

function Data($table,$columns=array(),$values=array())

{

$sql

= ' into '.$table

.'( ';

for($i

= 0; $i

< sizeof($columns);$i

++)

{

$sql

.= $columns[$i];

if($i

< sizeof($columns) - 1)

{

$sql

.= ',';

}

}

$sql

.= ') values ( ';

for($i

= 0; $i

< sizeof($values);$i

++)

{

$sql

.= "'".$values[$i]."'";

if($i

< sizeof($values) - 1)

{

$sql

.= ',';

}

}

$sql

.= ' )';

$this->open();

mysql_query($sql,$this->conn);

$id

= mysql__id($this->conn);

$this->close();

return

$id;

}

/**

* 通過表中的某一屬性獲取數據

*/

public

function getDataByAtr($tableName,$atrName,$atrValue){

@$data

= $this->getObjListBySql("SELECT * FROM ".$tableName." WHERE $atrName = '$atrValue'");

if(count($data)!=0)return

$data;

return

NULL;

}

/**

* 通過表中的"id",刪除記錄

*/

public

function ($tableName,$atrName,$atrValue){

$this->open();

$Result

= false;

if(mysql_query("DELETE FROM ".$tableName." WHERE $atrName = '$atrValue'")) $Result

= true;

$this->close();

if($Result) return

true;

else

return false;

}

/**

* 更新表中的屬性值

*/

public

function updateParamById($tableName,$atrName,$atrValue,$key,$value){

$db

= new

DB();

$db->open();

if(mysql_query("UPDATE ".$tableName." SET $key = '$value' WHERE $atrName = '$atrValue' ")){ //$key不要單引號

$db->close();

return

true;

}

else{

$db->close();

return

false;

}

}

/*

* @description: 取得一個table的所有屬性名

* @param: $tbName 表名

* @return:字符串數組

*/

public

function fieldName($tbName){

$resultName=array();

$i=0;

$this->open();

$result

= mysql_query("SELECT * FROM $tbName");

while

($property

= mysql_fetch_field($result)){

$resultName[$i++]=$property->name;

}

$this->close();

return

$resultName;

}

}

?>

接下來是測試了。我在phpmyadmin中建了一個test0數據庫,裏面建一張表user。然後用php寫一個user類對應數據庫中的user表。

require_once("./");

class

User{

public

$name = NULL;

public

$password = NULL;

/**

* 構造函數

*/

public

function __construct($name,$password){

$this->name = $name;

$this->password = $password;

}

public

function (){

$db

= new

DB();

$resultid

= $db->Data("user",array(),array('',$this->name,$this->password));

return

$resultid;

}

public

static function getUserById($uid){

$db

= new

DB();

return

$db->getDataByAtr("user",'uid',$uid);

}

public

static function getUserByName($name){

$db

= new

DB();

@$data

= $db->getObjListBySql("SELECT * FROM user WHERE name = '$name'");

if(count($data)!=0)return

$data;

else

return null;

}

public

static function getAllUser(){

$db

= new

DB();

@$data

= $db->getObjListBySql("SELECT * FROM user");

if(count($data)!=0) return

$data;

else

return null;

}

public

static function ByUid($uid){

$admin

= Admin::getAdminById($uid);

$db

= new

DB();

if($db->("user","uid",$uid)) return

true;

else

return false;

}

}

?>

測試程序:

header("Content-Type:text/html; charset=utf8");

require_once("./");

$user

= new

User("HelloWorld","123456");

$user->();

$users

= User::getAllUser();

foreach

($users

as $u) {

echo

"

".$u->name."

".$u->password."

";

}

?>

  運行結果: