php的mysql函數仿pdo操作資料庫類_PHP教程

來源:互聯網
上載者:User
PDO顯然將成為php的標準資料庫操作方式。雖然國內的很多php空間或主機都已支援php5.2以上的版本了,但由於普及和技術上的原因還是有部分不支援pdo的。

由於從今年開始 哈爾濱智華軟體的php課程在資料庫操作的學習改為以pdo為主(當然課程在學習和最後實訓時還是有mySQL函數操作資料庫訓練的),在實際開發中,我的學生不可避免的遇到了 採用pdo開發的程式,在程式實施時卻探索服務器不支援pdo,好在都是客戶的伺服器,重新升級安裝了一下php的新版本就解決了。

但這樣卻提出了一個問題?

要麼開發用mySQL函數方式,

要麼開發用pdo而後升級php版本,

要麼發現用pdo開發無法升級php版本,用mySQL函數方式重寫原有pdo方式代碼

看來開發用開發用mySQL函數方式 似乎又成了最好的解決辦法,這不又回到起始點,難道非要等到pdo都普及了再用pdo開發麼,如果這樣 就意味著我的php課程將教授學生一個已經開始淘汰的開發方式,學生學習完以後,幾年內又要不得不放棄已經習慣的mySQL函數開發方式,再適應新的pdo開發方式。

有沒有一個折中方案,既可以讓學生學到新的pdo開發方式,在工作中又可以應對老得mySQL函數開發方式呢?那天學生問起 忽發奇想寫個類,類的方法都是pdo的方式,然後將mySQL函數的操作 都封裝到 這個類的方法裡不就可以了麼。

解決初衷 是開發是都採用pdo方式操作,如果需要mySQL函數方式 只要將連庫的檔案替換成mySQL函數連庫代碼,然後在後邊加上這個類 並執行個體化對象為pdo的那個操作對象不就可以實現pdo方式改為mySQL函數方式了

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

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;

?>

查詢代碼如下:

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’],"
";

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

{

echo $row[’guestName’],"
";

}

?>

大家會發現我在連庫檔案後 ,添加了2行代碼(當然工作時將這兩行寫在連庫檔案裡剛好了)

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

$db = new Deep_MySQLfunction4PDO();

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

Deep_MySQLfunction4PDO類檔案代碼如下:

/*

模仿pdo方式的一個mysql函數的操作類。

哈爾濱智華軟體培訓學校 呂海鵬2011-11-25

調用:在mysql連庫函數後調用

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

$db = new Deep_MySQLfunction4PDO();

*/

// 仿PDO class

class Deep_MySQLfunction4PDO{

//插入 刪除 修改

public function exec($sql){

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

return mysql_affected_rows();

}

//查詢

public function query($sql){

$stmt=new Deep_MySQLfunction4PDO_stmt();

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

return $stmt;

}

}

// 仿PDOStatement class

class Deep_MySQLfunction4PDO_stmt{

var $query;

public function fetch(){

return mysql_fetch_array($this->query);

}

}

?>

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

作者 呂海鵬

http://www.bkjia.com/PHPjc/478490.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478490.htmlTechArticlePDO顯然將成為php的標準資料庫操作方式。雖然國內的很多php空間或主機都已支援php5.2以上的版本了,但由於普及和技術上的原因還是有部分...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.