程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中PDO的基礎應用實例

PHP中PDO的基礎應用實例

編輯:關於PHP編程

PHP開發中,mysql或者mysqli是現在大家使用較多的數據庫連接方式。在PHP5中已經開始有PDO支持了,聽說在下一個版本PHP6中,PDO將會作為默認的數據庫鏈接工具,不管是真還是假,PDO作為數據庫的另一種連接方式在不久的將來也許會很普遍的使用,這裡清源就目前掌握的知識來看,將PDO的使用以實例的方式和大家分享一下,文章的部分代碼來源於網絡。


在使用PDO之前首先要設置PHP.INI文件,使PHP支持PDO,因為PHP5默認是不支持的。在PHP安裝目錄下找到PHP.INI文件,打開並搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,將前面的分號(;)去掉,重啟apache即可。


接下來我們就開始寫PHP代碼了,首先是連接數據庫,看下面的例子:


exec('SET CHARACTER SET '.DB_CHARSET);
    $DBH->exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "
"; die(); } ?>


連接成功後,我們需要對數據庫中的數據進行增刪改查操作,這裡主要用到exec和query兩個函數。


示例:


exec($sql_insert); //返回 bool 的true or fal
$lastInsertId = $DBH->lastInsertId();
//刪除數據
$sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId;
$back = $DBH->exec($sql_delete); //返回 bool 的true or fal
$lastInsertId = $DBH->lastInsertId();
//更新數據
$sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId;
$lastUpdateId = $DBH->lastInsertId(); //返回的對應的操作的id
//查詢數據
$sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 ';
$back = $DBH->query($sql_select); //返回一個對象 這個對象可以用foreach 直接遍歷循環 循環的為查詢的結果集
$back = $DBH->query($sql_select)->fetch(); //返回一條數據結果 這個對象可以用foreach 直接遍歷循環 循環的為查詢的結果集
$back = $DBH->query($sql_select)->fetchAll(); //返回一個數組 這個對象可以用foreach 直接遍歷循環 循環的為查詢的結果集
$back = $DBH->query($sql_select)->fetchColumn(0); //返回一個字段字符串,這個字符串是返回的記錄的第一條記錄的第一個字段
?>


到這裡,PDO的基本操作基本上結束了。對於一般的企業網站,小型的管理系統基本上能滿足了,但是,如果我們開發大型網站或者邏輯較復雜的管理系統,僅僅靠數據的讀寫是遠遠不夠的,我們可能還需要對數據庫的存儲過程、事務等對象進行操作,下面我們繼續看看用PDO是如何實現的。


對於事務,PDO已經封裝好了,我們只需要調用就可以了。


示例:


beginTransaction();//開啟一個事務
    //Sql 執行的內容 ......................
    $DBH->exec($sql_insert); //執行一系列的操作
    $DBH->exec($sql_update);
    $DBH->exec($sql_delete);
    //等等
    $DBH->commit(); //如果正確執行完成 那麼確認 commit
} catch(Exception $e) {
    $DBH->rollBack();//如果執行中有錯誤的情況下  回滾
}
?>


這裡重點說明一下,在使用事務時,一定要使用try..catch語句,當返回錯誤時事務不會提交。


PDO在執行存儲過程時這裡還是運用了比較老的方法,因為這一塊清源也還沒完全搞明白。如果大家有更好的辦法可以拿出來共享一下。


看代碼:


exec($sql_procedure);
    $sql_call_procedure = 'CALL inout_test(100,@out_option_name,@out_option_value)';
    $DBH->exec($sql_call_procedure);
    $sql_select_procedure = 'Select @out_option_name,@out_option_value';
    $back = $DBH->query($sql_select_procedure)->fetch();
    $back = $DBH->exec($sql_drop_procedure);
}catch(Exception $e){
    echo $e->getMessage();
}
?>


另外UncleToo再給大家介紹一點關於PDO預處理方面的知識。預處理機制有很多好處,他可以使sql語句重復使用,而且執行效率比直接執行來的更高,所以,如果我們把PDO的預處理機制用好了,對於程序來說是很不錯的。(PS:T不錯的PHP Q扣峮:276167802,驗證:csl)


看下面這段實例代碼:


prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,:option_name,:option_value,\'no\')');
$option_name = $option_value = '';
$stmt->bindParam(':option_name', $option_name); //
$stmt->bindParam(':option_value', $option_value);
                                                                  
// 插入一條數據A
$option_name = 'name'.time();
$option_value = 'value'.time();
$stmt->execute();
                                                                  
// 插入另一條不同的數據B
$option_name = 'name_'.time();
$option_value = 'value_'.time();
$stmt->execute();
                                                                  
$stmt = $DBH->prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,?,?,\'no\')');
$option_name = $option_value = '';
$stmt->bindParam('1', $option_name); //
$stmt->bindParam('2', $option_value);
                                                                  
// 這裡我們還可以插入A數據
$option_name = 'name'.time();
$option_value = 'value'.time();
$stmt->execute();
                                                                  
// 這裡我們同樣還可以插入B數據
$option_name = 'name_'.time();
$option_value = 'value_'.time();
$stmt->execute();
                                                                  
                                                                  
$stmt = $DBH->prepare("Select * FROM wp_options where option_id = ?");
if ($stmt->execute(array(@$_GET['option_id']))) {
  while (@$row = $stmt->fetch()) {
    print_r($row);
  }
}
?>


上面介紹的這些都是PDO的基礎,基本能滿足我們在開發過程中的需要,對於其他功能,比如PDO大對象,錯誤處理,游標等功能大家可以參考PHP官方手冊,這裡就不做說明了(其實清源也不會^_^...)

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