日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php pdo操作数据库

發布時間:2025/3/15 php 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php pdo操作数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  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 的例子:

<?php if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {echo "Running on mysql; doing something mysql specific here\n"; } ?>
PDO::ATTR_ORACLE_NULLS (integer)在獲取數據時將空字符串轉換成 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?— 為語句設置默認的獲取模式。

轉載于:https://www.cnblogs.com/yujon/p/5476176.html

總結

以上是生活随笔為你收集整理的php pdo操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。