PHP中PDO的基礎應用執行個體_PHP教程

來源:互聯網
上載者:User
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官方手冊,這裡就不做說明了(其實清源也不會^_^...)

http://www.bkjia.com/PHPjc/635048.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/635048.htmlTechArticle在 PHP開發 中,mysql或者mysqli是現在大家使用較多的資料庫連接方式。在PHP5中已經開始有PDO支援了,聽說在下一個版本PHP6中,PDO將會作為默...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.