欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

php操作數(shù)據(jù)庫封裝 php如何封裝

PHP中對數(shù)據(jù)庫操作的封裝,有什么好的例子嗎

類文件mysql.class.php:

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供北京網(wǎng)站建設(shè)、北京做網(wǎng)站、北京網(wǎng)站設(shè)計(jì)、北京網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、北京企業(yè)網(wǎng)站模板建站服務(wù),十多年北京做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

?php

class?Mysql{

//數(shù)據(jù)庫連接返回值

private?$conn;

/**

*?[構(gòu)造函數(shù),返回值給$conn]

*?@param?[string]?$hostname?[主機(jī)名]

*?@param?[string]?$username[用戶名]

*?@param?[string]?$password[密碼]

*?@param?[string]?$dbname[數(shù)據(jù)庫名]

*?@param?[string]?$charset[字符集]

*?@return?[null]

*/

function?__construct($hostname,$username,$password,$dbname,$charset='utf8'){

$config?=?@mysql_connect($hostname,$username,$password);

if(!$config){

echo?'連接失敗,請聯(lián)系管理員';

exit;

}

$this-conn?=?$config;

$res?=?mysql_select_db($dbname);

if(!$res){

echo?'連接失敗,請聯(lián)系管理員';

exit;

}

mysql_set_charset($charset);

}

function?__destruct(){

mysql_close();

}

/**

*?[getAll?獲取所有信息]

*?@param?[string]?$sql?[sql語句]

*?@return?[array]?[返回二維數(shù)組]

*/

function?getAll($sql){

$result?=?mysql_query($sql,$this-conn);

$data?=?array();

if($result??mysql_num_rows($result)0){

while($row?=?mysql_fetch_assoc($result)){

$data[]?=?$row;

}

}

return?$data;

}

/**

*?[getOne?獲取單條數(shù)據(jù)]

*?@param?[string]?$sql?[sql語句]

*?@return?[array]?[返回一維數(shù)組]

*/

function?getOne($sql){

$result?=?mysql_query($sql,$this-conn);

$data?=?array();

if($result??mysql_num_rows($result)0){

$data?=?mysql_fetch_assoc($result);

}

return?$data;

}

/**

*?[getOne?獲取單條數(shù)據(jù)]

*?@param?[string]?$table?[表名]

*?@param?[string]?$data?[由字段名當(dāng)鍵,屬性當(dāng)鍵值的一維數(shù)組]

*?@return?[type]?[返回false或者插入數(shù)據(jù)的id]

*/

function?insert($table,$data){

$str?=?'';

$str?.="INSERT?INTO?`$table`?";

$str?.="(`".implode("`,`",array_keys($data))."`)?";

$str?.="?VALUES?";

$str?.=?"('".implode("','",$data)."')";

$res?=?mysql_query($str,$this-conn);

if($res??mysql_affected_rows()0){

return?mysql_insert_id();

}else{

return?false;

}

}

/**

*?[update?更新數(shù)據(jù)庫]

*?@param?[string]?$table?[表名]

*?@param?[array]?$data?[更新的數(shù)據(jù),由字段名當(dāng)鍵,屬性當(dāng)鍵值的一維數(shù)組]

*?@param?[string]?$where?[條件,‘字段名’=‘字段屬性’]

*?@return?[type]?[更新成功返回影響的行數(shù),更新失敗返回false]

*/

function?update($table,$data,$where){

$sql?=?'UPDATE?'.$table.'?SET?';

foreach($data?as?$key?=?$value){

$sql?.=?"`{$key}`='{$value}',";

}

$sql?=?rtrim($sql,',');

$sql?.=?"?WHERE?$where";

$res?=?mysql_query($sql,$this-conn);

if($res??mysql_affected_rows()){

return?mysql_affected_rows();

}else{

return?false;

}

}

/**

*?[delete?刪除數(shù)據(jù)]

*?@param?[string]?$table?[表名]

*?@param?[string]?$where?[條件,‘字段名’=‘字段屬性’]

*?@return?[type]?[成功返回影響的行數(shù),失敗返回false]

*/

function?del($table,$where){

$sql?=?"DELETE?FROM?`{$table}`?WHERE?{$where}";

$res?=?mysql_query($sql,$this-conn);

if($res??mysql_affected_rows()){

return?mysql_affected_rows();

}else{

return?false;

}

}

}

?

使用案例:

?php

//包含數(shù)據(jù)庫操作類文件

include?'mysql.class.php';

//設(shè)置傳入?yún)?shù)

$hostname='localhost';

$username='root';

$password='123456';

$dbname='aisi';

$charset?=?'utf8';

//實(shí)例化對象

$db?=?new?Mysql($hostname,$username,$password,$dbname);

//獲取一條數(shù)據(jù)

$sql?=?"SELECT?count(as_article_id)?as?count?FROM?as_article?where?as_article_type_id=1";

$count?=?$db-getOne($sql);

//獲取多條數(shù)據(jù)

$sql?=?"SELECT?*?FROM?as_article?where?as_article_type_id=1?order?by?as_article_addtime?desc?limit?$start,$limit";

$service?=?$db-getAll($sql);

//插入數(shù)據(jù)

$arr?=?array(

'as_article_title'='數(shù)據(jù)庫操作類',

'as_article_author'='rex',

);

$res?=?$db-insert('as_article',$arr);

//更新數(shù)據(jù)

$arr?=?array(

'as_article_title'='實(shí)例化對象',

'as_article_author'='Lee',

);

$where?=?"as_article_id=1";

$res?=?$db-update('as_article',$arr,$where);

//刪除數(shù)據(jù)

$where?=?"as_article_id=1";

$res?=?$db-del('as_article',$where);

?

如何使用PHP編程說明

PHP是一門高效的網(wǎng)絡(luò)編程語言 由于它具有編寫靈活 運(yùn)行快速等優(yōu)點(diǎn) 迅速成為Web程序員的首選語言 前不久的一份權(quán)威調(diào)查表明 現(xiàn)在已經(jīng)有 %的網(wǎng)站使用PHP作為主要的服務(wù)器端編程語言

但是 要成為一名PHP編程高手卻并不容易 并不像很多人想象的那樣 只要能夠飛快地編寫幾條簡單的代碼去解決一個(gè)復(fù)雜的問題就是PHP編程高手了 真正的PHP高手還需要考慮更多的其它問題 以下三條準(zhǔn)則是一名成熟的PHP程序員在編程中應(yīng)該首先遵循的準(zhǔn)則

懶惰是金

編寫漂亮的代碼

追求程序的速度 而不是編程的速度

一 懶惰是金

做一個(gè)懶惰的程序員嗎?這個(gè)想法太奇怪了!因?yàn)檫@個(gè)世界上最忙碌的人可能就是計(jì)算機(jī)程序員了 但正是因?yàn)槌绦騿T太忙了 所以才應(yīng)該在編程時(shí)學(xué)會偷懶

對于一個(gè)程序員來說 懶惰的方法有兩種 其一 大膽使用現(xiàn)成的別人的程序代碼 把這些代碼融入到你自己的程序或者項(xiàng)目中去 其二是編寫一些有用的代碼建立一個(gè)函數(shù)庫 在將來編寫程序時(shí)可以順手拈來 省去了許多重復(fù)的勞動 自然就可以懶惰一點(diǎn)了

這兩種偷懶的方法都非常適合PHP程序員了

首先 PHP是在自由開放的環(huán)境中誕生和成長的一門語言 在世界各地 有成千上萬的程序員 他們一直在為PHP的完美而不斷奮斗 他們也愿意和別人分享自己的聰明才智和自己編寫的代碼 你每天都可以從一些PHP網(wǎng)站 郵件列表 新聞組發(fā)現(xiàn)大量的優(yōu)秀的程序代碼 這樣說 我并不是鼓勵你整天等著讓別人為你編寫代碼 但是你可以 站在偉人的肩膀上 充分發(fā)揚(yáng) 拿來主義 聰明地應(yīng)用別人的程序代碼可以節(jié)省你大量時(shí)間 其次 在PHP中 你可以方便地建立自己的函數(shù)庫 這樣可以在你以后編寫程序時(shí)省去很多麻煩

下面筆者為大家介紹幾個(gè)通用的函數(shù) 這些函數(shù)有的來自網(wǎng)上的一些開放源代碼的項(xiàng)目 有的精選自郵件列表 如果你能把它們加入到你自己的函數(shù)庫中 遲早你將會發(fā)現(xiàn)自己受益無窮

通用數(shù)據(jù)庫處理函數(shù)

和其它的CGI函數(shù)相比 PHP的優(yōu)點(diǎn)之一是具有很強(qiáng)大的數(shù)據(jù)庫處理能力 但是 在PHP中 對于不同的數(shù)據(jù)庫都使用一些特定的函數(shù)來專門處理 缺少通用的數(shù)據(jù)庫處理函數(shù) 這大大降低了程序代碼的可移植性 這也為初學(xué)編程的朋友帶來了很多不便

在網(wǎng)上 許多程序員都通過封裝類解決了這個(gè)問題 他們編寫了統(tǒng)一的函數(shù)用來處理任何流行的數(shù)據(jù)庫——不管是在Linux世界深受歡迎的mysql_query($Query_String $this-Link_ID);???????ss_timing_stop();???????ss_log(INFO ss_timing_current() Secs - $Query_String);???????$this-Row = ;???????$this-Errno = mysql_errno();???????$this-Error = mysql_error();???????if ($halt_on_error && !$this-Query_ID) {?????????????$this-h(huán)alt( Invalid SQL: $Query_String);???????}???????return $this-Query_ID; }

二 編寫漂亮的代碼

將后臺程序與前端程序分開

在編寫PHP程序時(shí) 有些代碼是用來處理一些事務(wù) 例如操作數(shù)據(jù)庫 進(jìn)行數(shù)學(xué)運(yùn)算等 而另外的一些代碼則只是事務(wù)處理的結(jié)果顯示出來 例如一些使用echo 語句將結(jié)果以HTML的格式顯示在Web瀏覽器上的PHP代碼以及那些直接嵌入PHP程序的HTML代碼 首先我們應(yīng)該清晰地區(qū)分這兩種代碼 把前者稱為后臺程序 把后者稱為前端程序

因?yàn)镻HP是一種嵌入式編程語言 也就是說 所有的PHP代碼都可以嵌入到HTML代碼之中 這為程序的編寫帶來了許多便利之處 但是 物極必反 如果在一段較長的程序中將PHP代碼和HTML代碼混合編寫 這將使程序雜亂無章 不利于程序的維護(hù)和閱讀 所以我們需要盡可能地將這些程序中混雜于HTML代碼中的PHP代碼移植出來 在專門的文件中將這些代碼封裝成函數(shù) 然后在HTML代碼中使用 include語句來包含這些文件 在適當(dāng)?shù)奈恢谜{(diào)用這些函數(shù)即可

這種做法一方面使HTML代碼和PHP代碼都簡單易讀 另一方面因?yàn)镠TML代碼需要不斷更新 而這種分離的方法可以確保后臺程序不會被破壞 同前端程序不同 后臺程序更多追求的是穩(wěn)定 結(jié)構(gòu)化 極少更改 所以應(yīng)該認(rèn)真地設(shè)計(jì)和管理 其實(shí) 在設(shè)計(jì)臺程序時(shí) 投入大量時(shí)間是值得的 現(xiàn)在栽樹 以后乘涼 在以后的設(shè)計(jì)工作中將可以輕松地使用現(xiàn)在編寫的后臺程序

靈活使用包含文件

正如前面所說的那樣 后臺程序應(yīng)當(dāng)安排在一系列的包含文件中 包含文件可以通過include語句在需要時(shí)動態(tài)裝入 也可以在php ini文件中通過使用auto_prepend_file指令預(yù)先自動裝入 如果使用后一種方法的話 雖然取得了一勞永逸的好處 但是也有一些缺點(diǎn)值得我們注意 下面的一段代碼向我們展示了解析一個(gè)龐大的包含文件需要一定的時(shí)間

require(timing inc); ss_timing_start(); include(test inc); ss_timing_stop(); echo ss_timing_current() ?

在上面的代碼中 test inc是一個(gè) 行的包含文件 運(yùn)行的結(jié)果顯示 解析這個(gè)包含文件花費(fèi)了 秒鐘 對于一個(gè)大型網(wǎng)站來說 這個(gè)速度并不是可以忽略不記的

使用包含文件的另外一個(gè)缺點(diǎn)是 如果一個(gè)文件中的一個(gè)語句發(fā)生錯誤 將會使整個(gè)網(wǎng)站的PHP程序都無法運(yùn)行 所以使用起來也及其小心

其實(shí) 對包含文件稍做處理 即可以使包含文件只在需要時(shí)進(jìn)行解析 下面的代碼使abc inc文件只在程序需要時(shí)才作解析

if ( defined( __LIBA_INC) ) return; define( __LIBA_INC ); /* * 代碼 */ ?

使用面向?qū)ο蟮木幊谭椒?/p>

PHP 也是一種面向?qū)ο蟮恼Z言 面向?qū)ο蟮木幊谭椒ㄊ莾?yōu)秀的程序員們非常推崇的一種軟件設(shè)計(jì)方法 在PHP編程中可以充分發(fā)揮面向?qū)ο笳Z言的優(yōu)勢 對編程中的對象進(jìn)行封裝 在前面的代碼中 我們使用了面向?qū)ο蟮姆椒?例如在管理數(shù)據(jù)庫時(shí) 我們將query()函數(shù)封裝進(jìn)數(shù)據(jù)庫類中 這極大地方便了代碼的管理 增加了程序的可讀性

三 追求程序速度 而不是編程的速度

網(wǎng)站建設(shè)中 程序運(yùn)行速度和網(wǎng)頁下載速度都是關(guān)系成敗的重要因素 作為一名Web程序員 應(yīng)該更加注意代碼的運(yùn)行速度 下面介紹的幾種方法都在不同程度上提高了代碼的運(yùn)行速度

使用內(nèi)嵌的HTML代碼 而不是PHP的echo語句

因?yàn)镻HP是一門嵌入式Web編程語言 可以將HTML代碼和PHP代碼相互嵌入 但是很多程序員擔(dān)心在HTML代碼中過多的使用 嵌入PHP代碼會多次調(diào)用PHP解釋器 從而降低了PHP代碼的運(yùn)行速度 所以寧愿使用PHP的echo語句來輸出HTML代碼 而不直接使用HTML代碼 但事實(shí)卻恰恰相反 每一個(gè)PHP頁面只調(diào)用一次PHP解釋器來解釋所有的PHP代碼 所以 只在需要時(shí)才嵌入PHP代碼 而大多數(shù)的時(shí)候直接使用HTML代碼輸入結(jié)果 不但不會降低程序的運(yùn)行速度 而且因?yàn)闇p少了對echo語句的解析 往往可以提高代碼的運(yùn)行速度

下面的一段代碼證明了我們的結(jié)論 在這段代碼中 我們使用了前面介紹的時(shí)間測試函數(shù)

使用str-replace而不是ereg-replace 習(xí)慣使用Perl進(jìn)行編程的程序員更加愿意使用ereg_replace完成字符串替換工作 因?yàn)樵赑HP中ereg_replace的用法和Perl中模式匹配的用法相近 但是 下面的這段代碼證明 使用str_replace 代替 ereg_replace將可以大大提高代碼的運(yùn)行速度

測試str_replace和ereg_replace的運(yùn)行速度

//這段代碼測試str_replace的運(yùn)行速度 emphasis; ? for ($i= ; $i ; $i++) {???????str_replace(i b $string) } ?

//這段代碼測試ereg_replace的運(yùn)行速度 for ($i= ; $i ; $i++) {???????ereg_replace(([/]*)i \ b $string) } ? //打印結(jié)果

結(jié)論

使用str_replace的時(shí)間 - 使用ereg_pattern的時(shí)間 -

運(yùn)行上面的代碼 得到的結(jié)果是

使用str_replace的時(shí)間 - 使用ereg_pattern的時(shí)間 -

從運(yùn)行的結(jié)果我們可以看出使用str_replace替代ereg_replace作為字符串替換函數(shù) 極大地提高了代碼的運(yùn)行速度

注意字符串的引用

PHP 和其它很多編程語言一樣 可以使用雙引號( )來引用字符串 也可以使用單引號() 但是在PHP中 如果使用雙引號來引用字符串 那么PHP解析器將首先分析字符串中有沒有對變量的引用 有變量的話 將對變量進(jìn)行替換 如果是單引號 則沒有如此復(fù)雜——直接將單引號包含起來的所有字符串直接顯示出來 顯然 在PHP編程中 如果使用單引號引用字符串變量要比使用雙引號快速一些

在數(shù)據(jù)庫中避免使用聯(lián)合操作

比起其它的Web編程語言來說 PHP的數(shù)據(jù)庫功能十分強(qiáng)大 但是在PHP中數(shù)據(jù)庫的運(yùn)行仍然是一件十分費(fèi)時(shí)費(fèi)力的事情 所以 作為一個(gè)Web程序員 要盡量減少數(shù)據(jù)庫的查詢操作 同時(shí)應(yīng)該為數(shù)據(jù)庫建立適當(dāng)?shù)乃饕?另一件值得注意的事情是在用PHP操作數(shù)據(jù)庫時(shí) 盡可能不使用多個(gè)數(shù)據(jù)表的聯(lián)合操作 盡管聯(lián)合操作可以增強(qiáng)數(shù)據(jù)庫的查詢功能 但是卻大大增加了服務(wù)器的負(fù)擔(dān)

為了說明這個(gè)問題 我們可以看看下面的這個(gè)簡單的例子

我們在數(shù)據(jù)庫中創(chuàng)建了兩個(gè)數(shù)據(jù)表foo和big_foo 在數(shù)據(jù)表foo中 只有一個(gè)字段 包含了從 - 之間的所有自然數(shù) 數(shù)據(jù)表big_foo同樣只有一個(gè)字段 但包含了從 - 之間的全部自然數(shù) 所以 從大小上說 big_foo等于foo與它自身進(jìn)行了聯(lián)合操作

$db-query( select * from foo ); secs $db-next_record(); secs $db-query( insert into foo values (NULL) ); secs $db-query( select * from foo as a foo as b ); secs $db-query( select * from foo as a foo as b where a id b id ); secs $db-query( select * from foo as a foo as b where a id = b id ); secs $db-query( select * from big_foo ); secs

從上面操作結(jié)果我們可以發(fā)現(xiàn) 對于兩個(gè)有 條記錄的數(shù)據(jù)表進(jìn)行聯(lián)合 其速度并不比對一個(gè) 條紀(jì)錄的大型數(shù)據(jù)表單獨(dú)進(jìn)行操作快多少

注意include與require的區(qū)別

在PHP變成中 include()與require()的功能相同 但在用法上卻有一些不同 include()是有條件包含函數(shù) 而require()則是無條件包含函數(shù) 例如在下面的一個(gè)例子中 如果變量$somgthing為真 則將包含文件somefile

if($something){???????include( somefile ); }

但不管$something取何值 下面的代碼將把文件somefile包含進(jìn)文件里

if($something){???????require( somefile ); }

下面的這個(gè)有趣的例子充分說明了這兩個(gè)函數(shù)之間的不同

$i = ; while ($i ) {???????require( somefile $i );???????$i++; }

在這段代碼中 每一次循環(huán)的時(shí)候 程序都將把同一個(gè)文件包含進(jìn)去 很顯然這不是程序員的初衷 從代碼中我們可以看出這段代碼希望在每次循環(huán)時(shí) 將不同的文件包含進(jìn)來 如果要完成這個(gè)功能 必須求助函數(shù)include()

$i = ; while ($i ) { include( somefile $i ); $i++; }

注意echo和print的區(qū)別

PHP中echo和print的功能也基本相同 但是兩者之間也有細(xì)微差別 在PHP代碼中可以把print作為一個(gè)普通函數(shù)來使用 例如執(zhí)行下面的代碼后變量$res的值將為 $ret = print Hello World ;

lishixinzhi/Article/program/PHP/201405/30767

求PHP數(shù)據(jù)庫封裝類操作代碼

?php

class MySQL{

private $host; //服務(wù)器地址

private $name; //登錄賬號

private $pwd; //登錄密碼

private $dBase; //數(shù)據(jù)庫名稱

private $conn; //數(shù)據(jù)庫鏈接資源

private $result; //結(jié)果集

private $msg; //返回結(jié)果

private $fields; //返回字段

private $fieldsNum; //返回字段數(shù)

private $rowsNum; //返回結(jié)果數(shù)

private $rowsRst; //返回單條記錄的字段數(shù)組

private $filesArray = array(); //返回字段數(shù)組

private $rowsArray = array(); //返回結(jié)果數(shù)組

private $charset='utf8'; //設(shè)置操作的字符集

private $query_count=0; //查詢結(jié)果次數(shù)

static private $_instance; //存儲對象

//初始化類

private function __construct($host='',$name='',$pwd='',$dBase=''){

if($host != '') $this-host = $host;

if($name != '') $this-name = $name;

if($pwd != '') $this-pwd = $pwd;

if($dBase != '') $this-dBase = $dBase;

$this-init_conn();

}

//防止被克隆

private function __clone(){}

public static function getInstance($host='',$name='',$pwd='',$dBase=''){

if(FALSE == (self::$_instance instanceof self)){

self::$_instance = new self($host,$name,$pwd,$dBase);

}

return self::$_instance;

}

public function __set($name,$value){

$this-$name=$value;

}

public function __get($name){

return $this-$name;

}

//鏈接數(shù)據(jù)庫

function init_conn(){

$this-conn=@mysql_connect($this-host,$this-name,$this-pwd) or die('connect db fail !');

@mysql_select_db($this-dBase,$this-conn) or die('select db fail !');

mysql_query("set names ".$this-charset);

}

//查詢結(jié)果

function mysql_query_rst($sql){

if($this-conn == '') $this-init_conn();

$this-result = @mysql_query($sql,$this-conn);

$this-query_count++;

}

//取得字段數(shù)

function getFieldsNum($sql){

$this-mysql_query_rst($sql);

$this-fieldsNum = @mysql_num_fields($this-result);

}

//取得查詢結(jié)果數(shù)

function getRowsNum($sql){

$this-mysql_query_rst($sql);

if(mysql_errno() == 0){

return @mysql_num_rows($this-result);

}else{

return '';

}

}

//取得記錄數(shù)組(單條記錄)

function getRowsRst($sql,$type=MYSQL_BOTH){

$this-mysql_query_rst($sql);

if(empty($this-result)) return '';

if(mysql_error() == 0){

$this-rowsRst = mysql_fetch_array($this-result,$type);

return $this-rowsRst;

}else{

return '';

}

}

//取得記錄數(shù)組(多條記錄)

function getRowsArray($sql,$type=MYSQL_BOTH){

!empty($this-rowsArray) ? $this-rowsArray=array() : '';

$this-mysql_query_rst($sql);

if(mysql_errno() == 0){

while($row = mysql_fetch_array($this-result,$type)) {

$this-rowsArray[] = $row;

}

return $this-rowsArray;

}else{

return '';

}

}

//更新、刪除、添加記錄數(shù)

function uidRst($sql){

if($this-conn == ''){

$this-init_conn();

}

@mysql_query($sql);

$this-rowsNum = @mysql_affected_rows();

if(mysql_errno() == 0){

return $this-rowsNum;

}else{

return '';

}

}

//返回最近插入的一條數(shù)據(jù)庫的id值

function returnRstId($sql){

if($this-conn == ''){

$this-init_conn();

}

@mysql_query($sql);

if(mysql_errno() == 0){

return mysql_insert_id();

}else{

return '';

}

}

//獲取對應(yīng)的字段值

function getFields($sql,$fields){

$this-mysql_query_rst($sql);

if(mysql_errno() == 0){

if(mysql_num_rows($this-result) 0){

$tmpfld = @mysql_fetch_row($this-result);

$this-fields = $tmpfld[$fields];

}

return $this-fields;

}else{

return '';

}

}

//錯誤信息

function msg_error(){

if(mysql_errno() != 0) {

$this-msg = mysql_error();

}

return $this-msg;

}

//釋放結(jié)果集

function close_rst(){

mysql_free_result($this-result);

$this-msg = '';

$this-fieldsNum = 0;

$this-rowsNum = 0;

$this-filesArray = '';

$this-rowsArray = '';

}

//關(guān)閉數(shù)據(jù)庫

function close_conn(){

$this-close_rst();

mysql_close($this-conn);

$this-conn = '';

}

//取得數(shù)據(jù)庫版本

function db_version() {

return mysql_get_server_info();

}

}

PHP訪問MYSQL數(shù)據(jù)庫封裝類(附函數(shù)說明)

復(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

;

}

}

?

當(dāng)前標(biāo)題:php操作數(shù)據(jù)庫封裝 php如何封裝
文章出自:http://www.chinadenli.net/article36/dddsssg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)網(wǎng)站設(shè)計(jì)公司虛擬主機(jī)關(guān)鍵詞優(yōu)化網(wǎng)站制作靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化