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

PHP 認識PDO數據庫抽象層,phppdo數據庫抽象

編輯:關於PHP編程

PHP 認識PDO數據庫抽象層,phppdo數據庫抽象


PDO全稱是PHP Data Object(PHP數據對象),是PHP連接數據庫中的一個擴展,目前得到普遍使用。PDO主要解決的問題是為不同的數據庫提供一個統一的數據訪問接口和操作層。為實現系統在跨數據庫平台的開發及遷移等問題上提供了較好的解決方案。PDO 對象的獲取
在PDO中,要建立與數據庫的連接需要實例化PDO的構造函數。PDO構造函數語法如下:
PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
通過PDO構造函數來連接數據庫:

 1 <?php
 2 $dbms = 'mysql';
 3 $dbName = 'dormitory';
 4 $host = 'localhost';
 5 $user = 'root';
 6 $pwd = '';
 7 $dsn = "$dbms:host=$host;dbname=$dbName";
 8 try {
 9     $pdo = new PDO($dsn, $user, $pwd);
10     echo '連接成功!';
11 } catch (Exception $e) {
12     echo $e->getMessage() . "<br>";
13 }
14 ?>

3種方法執行sql語句
執行sql語句的方法有:exec(),query(),prepare()+execute()。
1、exec()方法用於執行input,delete,update語句,返回值為受影響的行數;
2、query()方法用於執行select語句,返回值為一個二位數組;
3、預處理語句prepare()+execute(),可以用於執行input,delete,update,select語句,
可以把預處理語句看成想要運行的SQL的一種編譯過的模板,他可以使用變量參數進行定制,做到查詢時只需解析一次就可以執行多次;
如果應用程序只使用預處理語句,可以確保不會發生SQL注入。
PDO::prepare()返回值為一個PDOStatement對象,對象的內容為prepare()方法裡面的參數;
PDO::execute(),檢查sql是否可執行,返回值為一個boolean類型。
從預處理語句的返回值也可以看出,他並沒有真正的執行sql語句,而是檢查sql的正確性,准備好執行的狀態,等到需要用到結果集的時候再執行。

 1 <?php
 2             include_once './pdo_db_conn.php';
 3             try {
 4                 $query = "select * from building";
 5 //                $result = $pdo->query($query);//結果為一個二維數組
 6                 $result = $pdo->prepare($query);
 7                 var_dump($result);
 8                 $flag = $result->execute();
 9                 var_dump($flag);
10             } catch (Exception $e) {
11                 echo $e->getMessage();
12             }
13             ?>

返回值:

object(PDOStatement)[2]
  public 'queryString' => string 'select * from building' (length=22)

boolean true

3種方法獲取結果集
獲取結果集的方法有fetch(),fetchAll(),fetchColumn();
fetch()方法獲取結果集中的下一行,是一個數組;
fetchAll()方法獲取結果集中的所有行,是一個數組;
fetchColumn()方法獲取結果集中下一行指定的列的值。
三個方法的調用對象類型為PDOStatement對象類型,一般是在預處理語句之後執行

3種方法捕獲sql語句中的錯誤的方式
當執行sql語句出現錯誤是,可以根據設置的錯誤提示方式,來決定顯示錯誤的方法。
錯誤提示方式有:
1、PDO::ERRMODE_SILENT
默認方式,出現錯誤時程序繼續執行,無錯誤提示。
2、PDO::ERRMODE_WARNING
出現錯誤時會繼續執行,錯誤的部分會提示警告信息。
3、PDO::ERRMODE_EXCEPTION
出現錯誤時不會繼續執行,錯誤的部分會提示異常信息。

2種方法獲取程序錯誤信息
當執行sql語句出現錯誤是(訪問數據庫部分,對結果集的遍歷錯誤不會提示),可以通過errorCode(),errorInfo()兩個方法在後台輸出錯誤信息,當sql語句是通過預編譯執行的,這兩個方法不適用。當在程序中調用errorCode()方法後,返回值為00000(5個0)時,表示程序沒有錯誤,但返回其他5個字符時,表示程序是有錯誤的,這時可以通過調用errorInfo()方法來查看具體錯誤的信息。


PHP中的PDO模塊

這個跟PHP的版本有一點點關系的。比如,PHP5.2要開啟php_pdo.dll和php_pdo_mysql.dll兩個,php5.4則只需要開啟php_pdo_mysql.dll這一個就行了
 

php pdo怎操作數據庫

$s_sql = select username,password from t_table where username=? and password=?;
$sth = $dbh->prepare($s_sql);
$result = $sth->execute(array($username,$password));
$result = $sth->fetchAll();//如果不存在返回的是空的數組,如果存在就是用戶名+密碼
 

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