程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php的mysql函數仿pdo操作數據庫類

php的mysql函數仿pdo操作數據庫類

編輯:關於PHP編程

 

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的增刪改都一樣的,代碼如下:

 

 

<?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; 

?> 

查詢代碼如下:

 

 

<?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 />"; 

?> 

 

 

 

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

 

 

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

$db = new Deep_MySQLfunction4PDO(); 

 

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

 

Deep_MySQLfunction4PDO類文件代碼如下:

 

 

<?php 

/*

模仿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)不行 我這改了改這個類實現了,這是那個代碼寫法有些古怪 待我有空再 整理 做這篇文章的後續說明吧

 

作者 呂海鵬

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved