php PDO屬性設置與操作方法分析

這篇文章主要介紹了php PDO屬性設置與操作方法,結合實例形式分析了php pdo常見屬性功能及相關的設置、獲取操作技巧,需要的朋友可以參考下

本文實例講述了php PDO屬性設置與操作方法。分享給大家供大家參考,具體如下:

設置PDO在處理數據的過程中採用什麼方式去處理

PDO::setAttribute:設置屬性

PDO::getAttribute:獲取屬性

語法:

bool PDO::setAttribute ( int $attribute , mixed $value )

設置數據庫句柄屬性。下面列出了一些可用的通用屬性;有些驅動可能使用另外的特定屬性。

參數

$attribute

PDO::ATTR_CASE:強制列名爲指定的大小寫。他的$value可爲:

  • PDO::CASE_LOWER:強制列名小寫。
  • PDO::CASE_NATURAL:保留數據庫驅動返回的列名。
  • PDO::CASE_UPPER:強制列名大寫。

PDO::ATTR_ERRMODE:錯誤報告。他的$value可爲:

  • PDO::ERRMODE_SILENT: 僅設置錯誤代碼。
  • PDO::ERRMODE_WARNING: 引發 E_WARNING 錯誤
  • PDO::ERRMODE_EXCEPTION: 拋出 exceptions 異常。

PDO::ATTR_ORACLE_NULLS (在所有驅動中都可用,不僅限於Oracle): 轉換 NULL 和空字符串。他的$value可爲:

PDO::NULL_NATURAL: 不轉換。

PDO::NULL_EMPTY_STRING: 將空字符串轉換成 NULL 。

PDO::NULL_TO_STRING: 將 NULL 轉換成空字符串。

PDO::ATTR_STRINGIFY_FETCHES: 提取的時候將數值轉換爲字符串。 Requires bool .

PDO::ATTR_STATEMENT_CLASS: 設置從PDOStatement派生的用戶提供的語句類。 不能用於持久的PDO實例。 需要 array(string 類名, array(mixed 構造函數的參數))。

PDO::ATTR_TIMEOUT: 指定超時的秒數。並非所有驅動都支持此選項,這意味着驅動和驅動之間可能會有差異。比如,SQLite等待的時間達到此值後就放棄獲取可寫鎖,但其他驅動可能會將此值解釋爲一個連接或讀取超時的間隔。 需要 int 類型。

PDO::ATTR_AUTOCOMMIT (在OCI,Firebird 以及 MySQL中可用): 是否自動提交每個單獨的語句。

PDO::ATTR_EMULATE_PREPARES 啓用或禁用預處理語句的模擬。 有些驅動不支持或有限度地支持本地預處理。使用此設置強制PDO總是模擬預處理語句(如果爲 TRUE ),或試着使用本地預處理語句(如果爲 FALSE )。如果驅動不能成功預處理當前查詢,它將總是回到模擬預處理語句上。 需要 bool 類型。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (在MySQL中可用): 使用緩衝查詢。

PDO::ATTR_DEFAULT_FETCH_MODE: 設置默認的提取模式。關於模式的說明可以在 PDOStatement::fetch() 文檔找到。

常用屬性

PDO::ATTR_AUTOCOMMIT:設置當前連接Mysql服務器的客戶端的SQL語句是否自動執行,默認是自動提交

//自動提交屬性
var_dump($pdo->getAttribute(PDO::ATTR_AUTOCOMMIT));  //1
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
var_dump($pdo->getAttribute(PDO::ATTR_AUTOCOMMIT)); //0

PDO::ATTR_CASE:當pdo從結果集中獲取數據的時候,如何處理對應的字段的名字

  • PDO::CASE_LOWER:將所有字段都小寫顯示
  • PDO::CASE_UPPER:所有字段都大寫顯示
  • PDO::CASE_NATURAL:原本怎麼樣就怎麼樣
$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_NATURAL);
//或 $pdo->setAttribute(PDO::ATTR_CASE,1);
var_dump(PDO::CASE_UPPER);   //1 轉換爲大寫
var_dump(PDO::CASE_LOWER);   //2 轉換爲小寫
var_dump(PDO::CASE_NATURAL);  //0 是怎樣就是怎樣
$sql = "select * from user ";
$stmt = $pdo->query($sql);
var_dump($stmt->fetch(PDO::FETCH_ASSOC));

PDO::ATTR_ERRMODE:錯誤模式,當pdo出現錯誤的時候到底使用哪種模式進行處理

  • PDO::ERRMODE_SILENT:靜默模式,默認的出錯了不管
  • PDO::ERRMODE_WARNING:警告模式,如果出錯了就會報出警告
  • PDO::ERRMODE_EXCEPTION:異常模式,如果出錯會採用異常來處理(PDOException)
var_dump($pdo->getAttribute(PDO::ATTR_ERRMODE));
var_dump(PDO::ERRMODE_SILENT);    //0 靜默模式,默認的出錯了不管
var_dump(PDO::ERRMODE_WARNING);    //1 警告模式,如果出錯了就會報出警告
var_dump(PDO::ERRMODE_EXCEPTION);  //2 異常模式,如果出錯會採用異常來處理(PDOException)

PDO::ATTR_PERSISTENT:當前對Mysql服務器的連接是否是長連接

  • TRUE:是長連接(長連接的使用必須要配合:Apache(connection:keepAlive),Mysqld)
  • FALSE:默認的,非長連接

什麼情況下使用長連接?

不同的腳本的執行間距非常短,同時每個腳本都要操作數據庫(Mysql:mysql_pconnect())

更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP基於pdo操作數據庫技巧總結》、《php+Oracle數據庫程序設計技巧總結》、《PHP+MongoDB數據庫操作技巧大全》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧彙總

希望本文所述對大家PHP程序設計有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章