1、方便不同數(shù)據(jù)庫之間的切換
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),芒市企業(yè)網(wǎng)站建設(shè),芒市品牌網(wǎng)站建設(shè),網(wǎng)站定制,芒市網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,芒市網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
數(shù)據(jù)庫有很多種,比如mysql,mysqli,Oracle,Access等等,使用pdo方式連接數(shù)據(jù)庫,只需要定義DSN即可以連接各種類型的數(shù)據(jù)庫
2、PDO有預(yù)處理機(jī)制,數(shù)據(jù)庫操作更快,而且預(yù)處理機(jī)制可以有效的防止數(shù)據(jù)注入,降低數(shù)據(jù)庫被黑客攻擊的可能
方法/函數(shù)中的變量是不能直接訪問的,不論是PHP還是其他語言。
相關(guān)知識:
變量具有自己的作用域,一般來說只有全局變量可以在任意位置訪問,否則只能在其作用域內(nèi)訪問。已以下函數(shù)為例
function?foo()?{
$param?=?'Hello';
}
變量$param是在函數(shù)內(nèi)聲明的,當(dāng)你未調(diào)用函數(shù)foo時,變量$param尚未存在,而foo函數(shù)執(zhí)行結(jié)束后$param變量的生命周期結(jié)束,也隨之被銷毀,所以對于外部代碼來說,$param總是不可見的。
復(fù)制代碼
代碼如下:
?php
/*
MYSQL
數(shù)據(jù)庫訪問封裝類
MYSQL
數(shù)據(jù)訪問方式,php4支持以mysql_開頭的過程訪問方式,php5開始支持以mysqli_開頭的過程和mysqli面向?qū)ο?/p>
訪問方式,本封裝類以mysql_封裝
數(shù)據(jù)訪問的一般流程:
1,連接數(shù)據(jù)庫
mysql_connect
or
mysql_pconnect
2,選擇數(shù)據(jù)庫
mysql_select_db
3,執(zhí)行SQL查詢
mysql_query
4,處理返回的數(shù)據(jù)
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
;
//當(dāng)前頁面進(jìn)程查詢數(shù)據(jù)庫的次數(shù)
var
$dblink
;
//數(shù)據(jù)庫連接資源
//鏈接數(shù)據(jù)庫
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("無法鏈接數(shù)據(jù)庫!");
}
//設(shè)置查詢字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this-dblink)
;
//選擇數(shù)據(jù)庫
$dbname
@mysql_select_db($dbname,$this-dblink)
;
}
//選擇數(shù)據(jù)庫
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this-dblink);
}
//執(zhí)行SQL查詢
function
query($sql)
{
$this-querynum++
;
return
mysql_query($sql,$this-dblink)
;
}
//返回最近一次與連接句柄關(guān)聯(lián)的INSERT,UPDATE
或DELETE
查詢所影響的記錄行數(shù)
function
affected_rows()
{
return
mysql_affected_rows($this-dblink)
;
}
//取得結(jié)果集中行的數(shù)目,只對select查詢的結(jié)果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//獲得單格的查詢結(jié)果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作產(chǎn)生的
ID,只對表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this-dblink))
=
?
$id
:
$this-result($this-query("SELECT
last_insert_id()"),
0);
}
//從結(jié)果集提取當(dāng)前行,以數(shù)字為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//從結(jié)果集提取當(dāng)前行,以字段名為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//從結(jié)果集提取當(dāng)前行,以字段名和數(shù)字為key表示的關(guān)聯(lián)數(shù)組形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//關(guān)閉鏈接
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
.=
"數(shù)據(jù)庫出錯:".htmlspecialchars($msg)."\n"
;
$message
.=
"/body\n"
;
$message
.=
"/html"
;
echo
$message
;
exit
;
}
}
?