php pdo操作資料庫

來源:互聯網
上載者:User

標籤:

  POD擴充是在PHP5中加入,該擴充提供PHP內建類 PDO來對資料庫進行訪問,不同資料庫使用相同的方法名,解決資料庫連接不統一的問題。

      PDO的特點:

  效能。PDO 從一開始就吸取了現有資料庫擴充成功和失敗的經驗教訓。因為 PDO 的代碼是全新的,所以我們有機會重新開始設計效能,以利用 PHP 5 的最新特性。
能力。PDO 旨在將常見的資料庫功能作為基礎提供,同時提供對於 RDBMS 獨特功能的方便訪問。
  簡單。PDO 旨在使您能夠便於使用資料庫。API 不會強行介入您的代碼,同時會清楚地表明每個函數調用的過程。
  運行時可擴充。PDO 擴充是模組化的,使您能夠在運行時為您的資料庫後端載入驅動程式,而不必重新編譯或重新安裝整個 PHP 程式。例如,PDO_OCI 擴充會替代 PDO 擴充實現 oracle 資料庫 API。還有一些用於 MySQL、PostgreSQL、ODBC 和 Firebird 的驅動程式,更多的驅動程式尚在開發。

  

  PDO 安裝

  你可以通過 PHP 的 phpinfo() 函數來查看是否安裝了PDO擴充。

  1.在 Unix /Linux系統上安裝 PDO

      在Unix上或Linux上你需要添加以下擴充:

    extension=pdo.so

  2.在Windows安裝pdo

  PDO 和所有主要的驅動作為共用擴充隨 PHP 一起發布,要啟用它們只需簡單地編輯 php.ini 檔案,並添加以下擴充:

     extension=php_pdo.dll

  除此之外還有以下對應的各種資料庫擴充:

    ;extension=php_pdo_firebird.dll    ;extension=php_pdo_informix.dll    ;extension=php_pdo_mssql.dll    ;extension=php_pdo_mysql.dll    ;extension=php_pdo_oci.dll    ;extension=php_pdo_oci8.dll    ;extension=php_pdo_odbc.dll    ;extension=php_pdo_pgsql.dll    ;extension=php_pdo_sqlite.dll

    開啟php.ini把上面所有行前面的分號去掉就可以了。
    在設定好這些配置後,我們需要重啟PHP 或 Web伺服器。

 

  下面我們以mysql為例來使用pdo:

<?php$dbms=‘mysql‘;     //資料庫類型$host=‘localhost‘; //資料庫主機名稱$dbName=‘test‘;    //使用的資料庫$user=‘root‘;      //資料庫連接使用者名稱$pass=‘‘;          //對應的密碼$dsn="$dbms:host=$host;dbname=$dbName";try {    $dbh = new PDO($dsn, $user, $pass); //初始化一個PDO對象    echo "串連成功<br/>";    /*你還可以進行一次搜尋操作    foreach ($dbh->query(‘SELECT * from FOO‘) as $row) {        print_r($row); //你可以用 echo($GLOBAL); 來看到這些值    }    */    $dbh = null;} catch (PDOException $e) {    die ("Error!: " . $e->getMessage() . "<br/>");}//預設這個不是長串連,如果需要資料庫長串連,需要最後加一個參數:array(PDO::ATTR_PERSISTENT => true) 變成這樣:$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));?>

 

  再來看看pdo的詳細介紹:

     1.預定義常量:

PDO::PARAM_BOOL (integer) 表示布林值資料型別。
PDO::PARAM_NULL (integer) 表示 SQL 中的 NULL 資料類型。
PDO::PARAM_INT (integer) 表示 SQL 中的整型。
PDO::PARAM_STR (integer) 表示 SQL 中的 CHAR、VARCHAR 或其他字串類型。
PDO::PARAM_LOB (integer) 表示 SQL 中大對象資料類型。
PDO::PARAM_STMT (integer) 表示一個記錄集類型。當前尚未被任何驅動支援。
PDO::PARAM_INPUT_OUTPUT (integer) 指定參數為一個預存程序的 INOUT 參數。必須用一個明確的 PDO::PARAM_* 資料類型跟此值進行按位或。
PDO::FETCH_LAZY (integer) 指定擷取方式,將結果集中的每一行作為一個對象返回,此對象的變數名對應著列名。PDO::FETCH_LAZY 建立用來訪問的物件變數名。在 PDOStatement::fetchAll() 中無效。
PDO::FETCH_ASSOC (integer) 指定擷取方式,將對應結果集中的每一行作為一個由列名索引的數組返回。如果結果集中包含多個名稱相同的列,則PDO::FETCH_ASSOC每個列名只返回一個值。
PDO::FETCH_NAMED (integer) 指定擷取方式,將對應結果集中的每一行作為一個由列名索引的數組返回。如果結果集中包含多個名稱相同的列,則PDO::FETCH_ASSOC每個列名 返回一個包含值的數組。
PDO::FETCH_NUM (integer) 指定擷取方式,將對應結果集中的每一行作為一個由列號索引的數組返回,從第 0 列開始。
PDO::FETCH_BOTH (integer) 指定擷取方式,將對應結果集中的每一行作為一個由列號和列名索引的數組返回,從第 0 列開始。
PDO::FETCH_OBJ (integer) 指定擷取方式,將結果集中的每一行作為一個屬性名稱對應列名的對象返回。
PDO::FETCH_BOUND (integer) 指定擷取方式,返回 TRUE 且將結果集中的列值分配給通過 PDOStatement::bindParam() 或 PDOStatement::bindColumn() 方法綁定的 PHP 變數。
PDO::FETCH_COLUMN (integer) 指定擷取方式,從結果集中的下一行返回所需要的那一列。
PDO::FETCH_CLASS (integer) 指定擷取方式,返回一個所請求類的新執行個體,映射列到類中對應的屬性名稱。

注意: 如果所請求的類中不存在該屬性,則調用 __set() 魔術方法

PDO::FETCH_INTO (integer) 指定擷取方式,更新一個請求類的現有執行個體,映射列到類中對應的屬性名稱。
PDO::FETCH_FUNC (integer) 允許在運行中完全用自訂的方式處理資料。(僅在 PDOStatement::fetchAll() 中有效)。
PDO::FETCH_GROUP (integer) 根據值分組返回。通常和 PDO::FETCH_COLUMN 或 PDO::FETCH_KEY_PAIR 一起使用。
PDO::FETCH_UNIQUE (integer) 只取唯一值。
PDO::FETCH_KEY_PAIR (integer) 擷取一個有兩列的結果集到一個數組,其中第一列為鍵名,第二列為值。自 PHP 5.2.3 起可用。
PDO::FETCH_CLASSTYPE (integer) 根據第一列的值確定類名。
PDO::FETCH_SERIALIZE (integer) 類似 PDO::FETCH_INTO ,但是以一個序列化的字串表示對象。自 PHP 5.1.0 起可用。從 PHP 5.3.0 開始,如果設定此標誌,則類的建構函式從不會被調用。
PDO::FETCH_PROPS_LATE (integer) 設定屬性前調用建構函式。自 PHP 5.2.0 起可用。
PDO::ATTR_AUTOCOMMIT (integer) 如果此值為 FALSE ,PDO 將試圖禁用自動認可以便資料庫連接開始一個事務。
PDO::ATTR_PREFETCH (integer) 設定預取大小來為你的應用平衡速度和記憶體使用量。並非所有的資料庫/驅動組合都支援設定預取大小。較大的預取大小導致效能提高的同時也會佔用更多的記憶體。
PDO::ATTR_TIMEOUT (integer) 設定串連資料庫的逾時秒數。
PDO::ATTR_ERRMODE (integer) 關於此屬性的更多資訊請參見 錯誤及錯誤處理 部分。
PDO::ATTR_SERVER_VERSION (integer) 此為唯讀屬性;返回 PDO 所串連的資料庫服務的版本資訊。
PDO::ATTR_CLIENT_VERSION (integer) 此為唯讀屬性;返回 PDO 驅動所用用戶端庫的版本資訊。
PDO::ATTR_SERVER_INFO (integer) 此為唯讀屬性。返回一些關於 PDO 所串連的資料庫服務的元資訊。
PDO::ATTR_CONNECTION_STATUS (integer)  
PDO::ATTR_CASE (integer) 用類似 PDO::CASE_* 的常量強制列名為指定的大小寫。
PDO::ATTR_CURSOR_NAME (integer) 擷取或設定使用遊標的名稱。當使用可滾動遊標和定點更新時候非常有用。
PDO::ATTR_CURSOR (integer) 選擇遊標類型。 PDO 當前支援 PDO::CURSOR_FWDONLY 和 PDO::CURSOR_SCROLL。一般為 PDO::CURSOR_FWDONLY,除非確實需要一個可滾動遊標。
PDO::ATTR_DRIVER_NAME (string) 返回驅動名稱。

使用 PDO::ATTR_DRIVER_NAME 的例子:

<?phpif ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == ‘mysql‘) {  echo "Running on mysql; doing something mysql specific here\n";}?>
PDO::ATTR_ORACLE_NULLS (integer) 在擷取資料時將Null 字元串轉換成 SQL 中的 NULL 。
PDO::ATTR_PERSISTENT (integer) 請求一個持久串連,而非建立一個新串連。關於此屬性的更多資訊請參見 串連與串連管理 。
PDO::ATTR_STATEMENT_CLASS (integer)  
PDO::ATTR_FETCH_CATALOG_NAMES (integer) 將包含的目錄名添加到結果集中的每個列名前面。目錄名和列名由一個小數點分開(.)。此屬性在驅動層面支援,所以有些驅動可能不支援此屬性。
PDO::ATTR_FETCH_TABLE_NAMES (integer) 將包含的表名添加到結果集中的每個列名前面。表名和列名由一個小數點分開(.)。此屬性在驅動層面支援,所以有些驅動可能不支援此屬性。
PDO::ATTR_STRINGIFY_FETCHES (integer)  
PDO::ATTR_MAX_COLUMN_LEN (integer)  
PDO::ATTR_DEFAULT_FETCH_MODE (integer) 自 PHP 5.2.0 起可用。
PDO::ATTR_EMULATE_PREPARES (integer) 自 PHP 5.1.3 起可用。
PDO::ERRMODE_SILENT (integer) 如果發生錯誤,則不顯示錯誤或異常。希望開發人員顯式地檢查錯誤。此為預設模式。關於此屬性的更多資訊請參見 錯誤與錯誤處理 。
PDO::ERRMODE_WARNING (integer) 如果發生錯誤,則顯示一個 PHP E_WARNING 訊息。關於此屬性的更多資訊請參見 錯誤與錯誤處理。
PDO::ERRMODE_EXCEPTION (integer) 如果發生錯誤,則拋出一個 PDOException 異常。關於此屬性的更多資訊請參見 錯誤與錯誤處理。
PDO::CASE_NATURAL (integer) 保留資料庫驅動返回的列名。
PDO::CASE_LOWER (integer) 強制列名小寫。
PDO::CASE_UPPER (integer) 強制列名大寫。
PDO::NULL_NATURAL (integer)  
PDO::NULL_EMPTY_STRING (integer)  
PDO::NULL_TO_STRING (integer)  
PDO::FETCH_ORI_NEXT (integer) 在結果集中擷取下一行。僅對可滾動遊標有效。
PDO::FETCH_ORI_PRIOR (integer) 在結果集中擷取上一行。僅對可滾動遊標有效。
PDO::FETCH_ORI_FIRST (integer) 在結果集中擷取第一行。僅對可滾動遊標有效。
PDO::FETCH_ORI_LAST (integer) 在結果集中擷取最後一行。僅對可滾動遊標有效。
PDO::FETCH_ORI_ABS (integer) 根據行號從結果集中擷取需要的行。僅對可滾動遊標有效。
PDO::FETCH_ORI_REL (integer) 根據當前遊標位置的相對位置從結果集中擷取需要的行。僅對可滾動遊標有效。
PDO::CURSOR_FWDONLY (integer) 建立一個順向資料指標的 PDOStatement 對象。此為預設的遊標選項,因為此遊標最快且是 PHP 中最常用的資料訪問模式。
PDO::CURSOR_SCROLL (integer) 建立一個可滾動遊標的 PDOStatement 對象。通過 PDO::FETCH_ORI_* 常量來控制結果集中擷取的行。
PDO::ERR_NONE (string) 對應 SQLSTATE ‘00000‘,表示 SQL 陳述式沒有錯誤或警告地成功發出。當用 PDO::errorCode() 或 PDOStatement::errorCode() 來確定是否有錯誤發生時,此常量非常方便。在檢查上述方法返回的錯誤狀態碼時,會經常用到。
PDO::PARAM_EVT_ALLOC (integer) 分配事件
PDO::PARAM_EVT_FREE (integer) 解除配置事件
PDO::PARAM_EVT_EXEC_PRE (integer) 執行一條預先處理語句之前觸發事件。
PDO::PARAM_EVT_EXEC_POST (integer) 執行一條預先處理語句之後觸發事件。
PDO::PARAM_EVT_FETCH_PRE (integer) 從一個結果集中取出一條結果之前觸發事件。
PDO::PARAM_EVT_FETCH_POST (integer) 從一個結果集中取出一條結果之後觸發事件。
PDO::PARAM_EVT_NORMALIZE (integer) 在綁定參數註冊允許驅動程式正常化變數名時觸發事件。

 2.PDO 類:

    • PDO::beginTransaction — 啟動一個事務
    • PDO::commit — 提交一個事務
    • PDO::__construct — 建立一個表示資料庫連接的 PDO 執行個體
    • PDO::errorCode — 擷取跟資料庫控制代碼上一次操作相關的 SQLSTATE
    • PDO::errorInfo — 返回最後一次操作資料庫的錯誤資訊
    • PDO::exec — 執行一條 SQL 陳述式,並返回受影響的行數
    • PDO::getAttribute — 取回一個資料庫連接的屬性
    • PDO::getAvailableDrivers — 返回一個可用驅動的數組
    • PDO::inTransaction — 檢查是否在一個事務內
    • PDO::lastInsertId — 返回最後插入行的ID或序列值
    • PDO::prepare — 備要執行的SQL語句並返回一個 PDOStatement 對象
    • PDO::query — 執行 SQL 陳述式,返回PDOStatement對象,可以理解為結果集
    • PDO::quote — 為SQL語句中的字串添加引號。
    • PDO::rollBack — 復原一個事務
    • PDO::setAttribute — 設定屬性
    • PDOStatement 類:
      • PDOStatement::bindColumn — 綁定一列到一個 PHP 變數
      • PDOStatement::bindParam — 綁定一個參數到指定的變數名
      • PDOStatement::bindValue — 把一個值綁定到一個參數
      • PDOStatement::closeCursor — 關閉遊標,使語句能再次被執行。
      • PDOStatement::columnCount — 返回結果集中的列數
      • PDOStatement::debugDumpParams — 列印一條 SQL 預先處理命令
      • PDOStatement::errorCode — 擷取跟上一次語句控制代碼操作相關的 SQLSTATE
      • PDOStatement::errorInfo — 擷取跟上一次語句控制代碼操作相關的擴充錯誤資訊
      • PDOStatement::execute — 執行一條預先處理語句
      • PDOStatement::fetch — 從結果集中擷取下一行
      • PDOStatement::fetchAll — 返回一個包含結果集中所有行的數組
      • PDOStatement::fetchColumn — 從結果集中的下一行返回單獨的一列。
      • PDOStatement::fetchObject — 擷取下一行並作為一個對象返回。
      • PDOStatement::getAttribute — 檢索一個語句屬性
      • PDOStatement::getColumnMeta — 返回結果集中一列的中繼資料
      • PDOStatement::nextRowset — 在一個多行集語句控制代碼中推進到下一個行集
      • PDOStatement::rowCount — 返回受上一個 SQL 陳述式影響的行數
      • PDOStatement::setAttribute — 設定一個語句屬性
      • PDOStatement::setFetchMode — 為語句設定預設的擷取模式。

php 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.