- 相關推薦
PHP封裝數據庫操作類
而PHP在訪問數據庫的時候又經常會出現各種問題,如字符編碼問題、SQL語法錯誤問題、PHP處理數據記錄對象和返回對象的問題等。下面內容由小編為大家介紹PHP封裝數據庫操作類方法,供大家參考!
優點:
方便快捷, 數據庫操作只需調用接口;
統一編碼(utf8),不易導致亂碼
結構清晰. 如處理前端請求的后臺程序(test.php) + 表封裝類(user.class.php) + 數據庫封裝類(db.class.php) + 配置信息(configuration.php)
以下例子有四個文件: configuration.php + db.class.php + user.class.php + test.php,放在同一個目錄下。
首先是一個數據庫配置的文件類configuration.php
/**
* 數據庫配置信息
*/
define('DB_HOST','localhost'); //服務器
define('DB_USER','root'); //數據庫用戶名
define('DB_PASSWORD',''); //數據庫密碼
define('DB_NAME','test0'); //默認數據庫
define('DB_CHARSET','utf8'); //數據庫字符集
define('TIMEZONE',"PRC"); //時區設置
?>
接下來就是數據庫操作類db.class.php
require_once("./configuration.php"); //引入配置常量文件
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表。
user.class.php
require_once("./db.class.php");
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;
}
}
?>
測試程序: test.php
header("Content-Type:text/html; charset=utf8");
require_once("./user.class.php");
$user
= new
User("HelloWorld","123456");
$user->();
$users
= User::getAllUser();
foreach
($users
as $u) {
echo
"
".$u->name."
".$u->password."
";
}
?>
運行結果:
【PHP封裝數據庫操作類】相關文章:
PHP數據庫操作類-ezSQL08-19
PHP操作MySQL數據庫的基本類10-14
php備份數據庫類的方法09-04
關于php操作mysql執行數據庫查詢08-11
PHP常用MySql操作07-26
PHP文件怎么操作09-03
PHP怎么插入數據庫07-09
php數據庫備份腳本05-25
PHP插入數據庫的方法07-03
PHP如何插入數據庫06-09