本身這就是一個自定義函數,數據需要插入的話需要自己構造sql語句然后通過mysql_query將函數返回的值寫入數據庫。
創新互聯10多年成都定制網站服務;為您提供網站建設,網站制作,網頁設計及高端網站定制服務,成都定制網站及推廣,對成都石涼亭等多個方面擁有豐富的網站制作經驗的網站建設公司。
想直接讓數據庫調用PHP的自定義函數是不現實的!
談一下個人的幾點認識,供參考:
封裝,百度百科的解釋:即隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別;將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。
簡單點說,封裝就是將某塊功能抽取出來,寫到一個函數里,供重復調用。封裝,通常是指類函數、類的成員。
就你上面的代碼,就個人理解,你完全可以將之理解為功能函數,這也算是一種“封裝”(但貌似與面向對象思想里的類的封裝有些區別)。
update 函數,其功能是對數據庫CURD四種基本操作里 U 的實現,其原理是通過對傳入的數組(據判斷,貌似是用“字段名”為鍵名,修改的值為 Value),通過對數組遍歷,進行組合,進一步得到 SQL 語句(update),并予以執行。
$str.=$sep.$key."='".$val."'";
$sep 是不同數據庫字段名之間的分隔符,$key 是數據庫字段名,$val 是修改的值。上面的代碼通過多次循環之后,就會形成合乎 SQL 語法的 Update 數據修改語句,例如:
update?table1?set?LastDate='ddd',SssName='ddd'?where?UserID="aasdd"
復制代碼
代碼如下:
?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
=
;
//當前頁面進程查詢數據庫的次數
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))
=
?
$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\nhead\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
;
}
}
?
可以的。
?
function?get_user(){
$sql?=?"select?*?from?user";
$result?=?mysql_query($sql);
$arr?=?array();
while($rows=mysql_fetch_assoc($reslut)){
$arr[]=$rows;
}
return?$arr;
}
$user?=?get_suer();
print_r($user);
?