西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)php教程 → php函數(shù)仿pdo操作mysql數(shù)據(jù)庫類

php函數(shù)仿pdo操作mysql數(shù)據(jù)庫類

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:lvhaipeng時間:2011/12/12 0:45:56字體大。A-A+

作者:lvhaipeng點擊:159次評論:0次標(biāo)簽: php

  • 類型:服務(wù)器區(qū)大。21M語言:中文 評分:7.5
  • 標(biāo)簽:
立即下載

PDO顯然將成為php的標(biāo)準(zhǔn)數(shù)據(jù)庫操作方式。雖然國內(nèi)的很多php空間或主機(jī)都已支持php5.2以上的版本了,但由于普及和技術(shù)上的原因還是有部分不支持pdo的。

由于從今年開始 哈爾濱智華軟件的php課程在數(shù)據(jù)庫操作的學(xué)習(xí)改為以pdo為主(當(dāng)然課程在學(xué)習(xí)和最后實訓(xùn)時還是有mySQL函數(shù)操作數(shù)據(jù)庫訓(xùn)練的),在實際開發(fā)中,我的學(xué)生不可避免的遇到了 采用pdo開發(fā)的程序,在程序?qū)嵤⿻r卻發(fā)現(xiàn)服務(wù)器不支持pdo,好在都是客戶的服務(wù)器,重新升級安裝了一下php的新版本就解決了。

但這樣卻提出了一個問題?
要么開發(fā)用mySQL函數(shù)方式,
要么開發(fā)用pdo而后升級php版本,
要么發(fā)現(xiàn)用pdo開發(fā)無法升級php版本,用mySQL函數(shù)方式重寫原有pdo方式代碼

看來開發(fā)用開發(fā)用mySQL函數(shù)方式 似乎又成了最好的解決辦法,這不又回到起始點,難道非要等到pdo都普及了再用 pdo開發(fā)么,如果這樣 就意味著我的php課程將教授學(xué)生一個已經(jīng)開始淘汰的開發(fā)方式,學(xué)生學(xué)習(xí)完以后,幾年內(nèi)又要不得不放棄已經(jīng)習(xí)慣的mySQL函數(shù)開發(fā)方式,再適應(yīng)新的pdo開發(fā)方式。

有沒有一個折中方案,既可以讓學(xué)生學(xué)到新的pdo開發(fā)方式,在工作中又可以應(yīng)對老得mySQL函數(shù)開發(fā)方式呢?那天學(xué)生問起 忽發(fā)奇想寫個類,類的方法都是pdo的方式,然后將mySQL函數(shù)的操作 都封裝到 這個類的方法里不就可以了么。

解決初衷 是開發(fā)是都采用pdo方式操作,如果需要mySQL函數(shù)方式 只要將連庫的文件替換成mySQL函數(shù)連庫代碼,然后在后邊加上這個類 并實例化對象為pdo的那個操作對象不就可以實現(xiàn)pdo方式改為mySQL函數(shù)方式了

pdo的增刪改都一樣的,代碼如下:

<?php   

require "./connDB.php" ;  

require ’./Deep.Class.MySQLfunction4PDO.php’;  

$db = new Deep_MySQLfunction4PDO();  

$sql="insert into guestbook(guestName,guestDatetime)values(’lvhaipeng zhihuasoft".mt_rand(1,100)." ’,’".date(’Y-m-d H:i:s’)."’)";  

//2 exec方法   

$count = $db->exec($sql);  

echo $count;  

?>  

查詢代碼如下:

view plaincopy to clipboardprint?

<?php  

require ’./connDB.php’;  

require ’./Deep.Class.MySQLfunction4PDO.php’;  

$db = new Deep_MySQLfunction4PDO();  

//2 query查詢   

$stmt = $db->query("SELECT * FROM guestbook" );   

// 1條記錄   

// $row =$stmt->fetch();   

//echo $row[’guestName’],"<br />";   

while($row = $stmt->fetch())  

{  

echo $row[’guestName’],"<br />";  

}  

?>  

大家會發(fā)現(xiàn)我在連庫文件后 ,添加了2行代碼(當(dāng)然工作時將這兩行寫在連庫文件里剛好了)

require ’./Deep.Class.MySQLfunction4PDO.php’;  

$db = new Deep_MySQLfunction4PDO();  

require ’./Deep.Class.MySQLfunction4PDO.php’;$db = new Deep_MySQLfunction4PDO();


這樣通過 Deep_MySQLfunction4PDO類我就實現(xiàn)了不用更改現(xiàn)有的pdo代碼,實現(xiàn)MySQL函數(shù)方式的操作了

Deep_MySQLfunction4PDO類文件代碼如下:

view plaincopy to clipboardprint?

<?php  

/* 

模仿pdo方式的一個mysql函數(shù)的操作類。 

調(diào)用:在mysql連庫函數(shù)后調(diào)用 

require ’./Deep.Class.MySQLfunction4PDO.php’; 

$db = new Deep_MySQLfunction4PDO(); 

*/  

// 仿 PDO class   

class Deep_MySQLfunction4PDO{  

//插入 刪除 修改    

public function exec($sql){  

@mysql_query( $sql ) or die("SQL語句執(zhí)行錯誤!");  

return mysql_affected_rows();  

}  

//查詢   

public function query($sql){  

$stmt=new Deep_MySQLfunction4PDO_stmt();  

$stmt->query=@mysql_query( $sql ) or die("SQL語句執(zhí)行錯誤!");  

return $stmt;  

}  

}  

// 仿 PDOStatement class   

class Deep_MySQLfunction4PDO_stmt{  

var $query;  

public function fetch(){  

return mysql_fetch_array($this->query);  

}  

}  

?>  

前一段時間課程比較多 今日周末有空 整理記錄如上, 又有學(xué)生提出 仿pdo的類遇到查詢 不用這個while($row =$stmt->fetch())用foreach( $stmt as $row)不行 我這改了改這個類實現(xiàn)了,這是那個代碼寫法有些古怪 待我有空再 整理 做這篇文章的后續(xù)說明吧

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)