《PHP編程:php pdo操作數(shù)據(jù)庫示例》要點:
本文介紹了PHP編程:php pdo操作數(shù)據(jù)庫示例,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP實例POD擴展是在PHP5中加入,該擴展提供PHP內置類 PDO來對數(shù)據(jù)庫進行訪問,不同數(shù)據(jù)庫使用相同的方法名,解決數(shù)據(jù)庫連接不統(tǒng)一的問題.
PHP實例PDO的特點:
PHP實例性能.PDO 從一開始就吸取了現(xiàn)有數(shù)據(jù)庫擴展成功和失敗的經驗教訓.因為 PDO 的代碼是全新的,所以我們有機會重新開始設計性能,以利用 PHP 5 的最新特性.
PHP實例能力.PDO 旨在將常見的數(shù)據(jù)庫功能作為基礎提供,同時提供對于 RDBMS 獨特功能的方便訪問.
PHP實例簡單.PDO 旨在使您能夠輕松使用數(shù)據(jù)庫.API 不會強行介入您的代碼,同時會清楚地表明每個函數(shù)調用的過程.
PHP實例運行時可擴展.PDO 擴展是模塊化的,使您能夠在運行時為您的數(shù)據(jù)庫后端加載驅動程序,而不必重新編譯或重新安裝整個 PHP 程序.例如,PDO_OCI 擴展會替代 PDO 擴展實現(xiàn) oracle 數(shù)據(jù)庫 API.還有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird 的驅動程序,更多的驅動程序尚在開發(fā).
PHP實例PDO 安裝
PHP實例你可以通過 PHP 的 phpinfo() 函數(shù)來查看是否安裝了PDO擴展.
PHP實例1.在 Unix /Linux系統(tǒng)上安裝 PDO
PHP實例?在Unix上或Linux上你需要添加以下擴展:
PHP實例
extension=pdo.so
PHP實例2.在Windows安裝pdo
PHP實例PDO 和所有主要的驅動作為共享擴展隨 PHP 一起發(fā)布,要激活它們只需簡單地編輯 php.ini 文件,并添加以下擴展:
PHP實例
extension=php_pdo.dll
PHP實例除此之外還有以下對應的各種數(shù)據(jù)庫擴展:
PHP實例
;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實例打開php.ini把上面所有行前面的分號去掉就可以了.
PHP實例在設定好這些配置后,我們需要重啟PHP 或 Web服務器.
PHP實例下面我們以mysql為例來使用pdo:?
PHP實例
<?php
$dbms='mysql'; //數(shù)據(jù)庫類型
$host='localhost'; //數(shù)據(jù)庫主機名
$dbName='test'; //使用的數(shù)據(jù)庫
$user='root'; //數(shù)據(jù)庫連接用戶名
$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/>");
}
//默認這個不是長連接,如果需要數(shù)據(jù)庫長連接,需要最后加一個參數(shù):array(PDO::ATTR_PERSISTENT => true) 變成這樣:
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
PHP實例再來看看pdo的詳細介紹:
PHP實例1.預定義常量:
PDO::PARAM_BOOL (integer) | 表示布爾數(shù)據(jù)類型. |
PDO::PARAM_NULL (integer) | 表示 SQL 中的 NULL 數(shù)據(jù)類型. |
PDO::PARAM_INT (integer) | 表示 SQL 中的整型. |
PDO::PARAM_STR (integer) | 表示 SQL 中的 CHAR、VARCHAR 或其他字符串類型. |
PDO::PARAM_LOB (integer) | 表示 SQL 中大對象數(shù)據(jù)類型. |
PDO::PARAM_STMT (integer) | 表示一個記錄集類型.當前尚未被任何驅動支持. |
PDO::PARAM_INPUT_OUTPUT (integer) | 指定參數(shù)為一個存儲過程的 INOUT 參數(shù).必須用一個明確的 PDO::PARAM_* 數(shù)據(jù)類型跟此值進行按位或. |
PDO::FETCH_LAZY (integer) | 指定獲取方式,將結果集中的每一行作為一個對象返回,此對象的變量名對應著列名.PDO::FETCH_LAZY 創(chuàng)建用來訪問的對象變量名.在 PDOStatement::fetchAll() 中無效. |
PDO::FETCH_ASSOC (integer) | 指定獲取方式,將對應結果集中的每一行作為一個由列名索引的數(shù)組返回.如果結果集中包含多個名稱相同的列,則PDO::FETCH_ASSOC每個列名只返回一個值. |
PDO::FETCH_NAMED (integer) | 指定獲取方式,將對應結果集中的每一行作為一個由列名索引的數(shù)組返回.如果結果集中包含多個名稱相同的列,則PDO::FETCH_ASSOC每個列名 返回一個包含值的數(shù)組. |
PDO::FETCH_NUM (integer) | 指定獲取方式,將對應結果集中的每一行作為一個由列號索引的數(shù)組返回,從第 0 列開始. |
PDO::FETCH_BOTH (integer) | 指定獲取方式,將對應結果集中的每一行作為一個由列號和列名索引的數(shù)組返回,從第 0 列開始. |
PDO::FETCH_OBJ (integer) | 指定獲取方式,將結果集中的每一行作為一個屬性名對應列名的對象返回. |
PDO::FETCH_BOUND (integer) | 指定獲取方式,返回 TRUE 且將結果集中的列值分配給通過 PDOStatement::bindParam() 或 PDOStatement::bindColumn() 方法綁定的 PHP 變量. |
PDO::FETCH_COLUMN (integer) | 指定獲取方式,從結果集中的下一行返回所需要的那一列. |
PDO::FETCH_CLASS (integer) | 指定獲取方式,返回一個所請求類的新實例,映射列到類中對應的屬性名. PHP實例注意: 如果所請求的類中不存在該屬性,則調用 __set() 魔術方法 |
PDO::FETCH_INTO (integer) | 指定獲取方式,更新一個請求類的現(xiàn)有實例,映射列到類中對應的屬性名. |
PDO::FETCH_FUNC (integer) | 允許在運行中完全用自定義的方式處理數(shù)據(jù).(僅在 PDOStatement::fetchAll() 中有效). |
PDO::FETCH_GROUP (integer) | 根據(jù)值分組返回.通常和 PDO::FETCH_COLUMN 或 PDO::FETCH_KEY_PAIR 一起使用. |
PDO::FETCH_UNIQUE (integer) | 只取唯一值. |
PDO::FETCH_KEY_PAIR (integer) | 獲取一個有兩列的結果集到一個數(shù)組,其中第一列為鍵名,第二列為值.自 PHP 5.2.3 起可用. |
PDO::FETCH_CLASSTYPE (integer) | 根據(jù)第一列的值確定類名. |
PDO::FETCH_SERIALIZE (integer) | 類似 PDO::FETCH_INTO ,但是以一個序列化的字符串表示對象.自 PHP 5.1.0 起可用.從 PHP 5.3.0 開始,如果設置此標志,則類的構造函數(shù)從不會被調用. |
PDO::FETCH_PROPS_LATE (integer) | 設置屬性前調用構造函數(shù).自 PHP 5.2.0 起可用. |
PDO::ATTR_AUTOCOMMIT (integer) | 如果此值為 FALSE ,PDO 將試圖禁用自動提交以便數(shù)據(jù)庫連接開始一個事務. |
PDO::ATTR_PREFETCH (integer) | 設置預取大小來為你的應用平衡速度和內存使用.并非所有的數(shù)據(jù)庫/驅動組合都支持設置預取大小.較大的預取大小導致性能提高的同時也會占用更多的內存. |
PDO::ATTR_TIMEOUT (integer) | 設置連接數(shù)據(jù)庫的超時秒數(shù). |
PDO::ATTR_ERRMODE (integer) | 關于此屬性的更多信息請參見 錯誤及錯誤處理 部分. |
PDO::ATTR_SERVER_VERSION (integer) | 此為只讀屬性;返回 PDO 所連接的數(shù)據(jù)庫服務的版本信息. |
PDO::ATTR_CLIENT_VERSION (integer) | 此為只讀屬性;返回 PDO 驅動所用客戶端庫的版本信息. |
PDO::ATTR_SERVER_INFO (integer) | 此為只讀屬性.返回一些關于 PDO 所連接的數(shù)據(jù)庫服務的元信息. |
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) | 返回驅動名稱.
PHP實例使用 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) | 在獲取數(shù)據(jù)時將空字符串轉換成 SQL 中的 NULL . |
PDO::ATTR_PERSISTENT (integer) | 請求一個持久連接,而非創(chuàng)建一個新連接.關于此屬性的更多信息請參見 連接與連接管理 . |
PDO::ATTR_STATEMENT_CLASS (integer) | |
PDO::ATTR_FETCH_CATALOG_NAMES (integer) | 將包含的目錄名添加到結果集中的每個列名前面.目錄名和列名由一個小數(shù)點分開(.).此屬性在驅動層面支持,所以有些驅動可能不支持此屬性. |
PDO::ATTR_FETCH_TABLE_NAMES (integer) | 將包含的表名添加到結果集中的每個列名前面.表名和列名由一個小數(shù)點分開(.).此屬性在驅動層面支持,所以有些驅動可能不支持此屬性. |
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) | 如果發(fā)生錯誤,則不顯示錯誤或異常.希望開發(fā)人員顯式地檢查錯誤.此為默認模式.關于此屬性的更多信息請參見 錯誤與錯誤處理 . |
PDO::ERRMODE_WARNING (integer) | 如果發(fā)生錯誤,則顯示一個 PHP E_WARNING 消息.關于此屬性的更多信息請參見 錯誤與錯誤處理. |
PDO::ERRMODE_EXCEPTION (integer) | 如果發(fā)生錯誤,則拋出一個 PDOException 異常.關于此屬性的更多信息請參見 錯誤與錯誤處理. |
PDO::CASE_NATURAL (integer) | 保留數(shù)據(jù)庫驅動返回的列名. |
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) | 根據(jù)行號從結果集中獲取需要的行.僅對可滾動游標有效. |
PDO::FETCH_ORI_REL (integer) | 根據(jù)當前游標位置的相對位置從結果集中獲取需要的行.僅對可滾動游標有效. |
PDO::CURSOR_FWDONLY (integer) | 創(chuàng)建一個只進游標的 PDOStatement 對象.此為默認的游標選項,因為此游標最快且是 PHP 中最常用的數(shù)據(jù)訪問模式. |
PDO::CURSOR_SCROLL (integer) | 創(chuàng)建一個可滾動游標的 PDOStatement 對象.通過 PDO::FETCH_ORI_* 常量來控制結果集中獲取的行. |
PDO::ERR_NONE (string) | 對應 SQLSTATE '00000',表示 SQL 語句沒有錯誤或警告地成功發(fā)出.當用 PDO::errorCode() 或 PDOStatement::errorCode() 來確定是否有錯誤發(fā)生時,此常量非常方便.在檢查上述方法返回的錯誤狀態(tài)代碼時,會經常用到. |
PDO::PARAM_EVT_ALLOC (integer) | 分配事件 |
PDO::PARAM_EVT_FREE (integer) | 解除分配事件 |
PDO::PARAM_EVT_EXEC_PRE (integer) | 執(zhí)行一條預處理語句之前觸發(fā)事件. |
PDO::PARAM_EVT_EXEC_POST (integer) | 執(zhí)行一條預處理語句之后觸發(fā)事件. |
PDO::PARAM_EVT_FETCH_PRE (integer) | 從一個結果集中取出一條結果之前觸發(fā)事件. |
PDO::PARAM_EVT_FETCH_POST (integer) | 從一個結果集中取出一條結果之后觸發(fā)事件. |
PDO::PARAM_EVT_NORMALIZE (integer) | 在綁定參數(shù)注冊允許驅動程序正常化變量名時觸發(fā)事件. |
PHP實例2.PDO 類:
PHP實例以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持維易PHP.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1497.html