PDO::setAttribute
設定預先定義的 PDO 屬性或自訂的驅動程式屬性。
語法
bool PDO::setAttribute ( $attribute, $value );
參數
$attribute:要設定的屬性。 如需支援的屬性清單,請參閱「備註」一節。
$value:值 (混合類型)。
傳回值
如果成功則傳回 true,否則傳回 false。
備註
屬性 | 處理者 | 支援的值 | 描述 |
---|---|---|---|
PDO::ATTR_CASE | PDO | PDO::CASE_LOWER PDO::CASE_NATURAL PDO::CASE_UPPER |
指定資料行名稱的大小寫。 PDO::CASE_LOWER 會產生小寫的資料行名稱。 PDO::CASE_NATURAL (預設值) 會顯示資料庫所傳回的資料行名稱。 PDO::CASE_UPPER 會使資料行名稱以大寫顯示。 此屬性可以使用 PDO::setAttribute 來設定。 |
PDO::ATTR_DEFAULT_FETCH_MODE | PDO | 請參閱 PDO 文件。 | 請參閱 PDO 文件。 |
PDO::ATTR_DEFAULT_STR_PARAM | PDO | PDO::PARAM_STR_CHAR PDO::PARAM_STR_NATL |
如需詳細資訊,請參閱 PDO::quote 中的範例。 |
PDO::ATTR_ERRMODE | PDO | PDO::ERRMODE_SILENT PDO::ERRMODE_WARNING PDO::ERRMODE_EXCEPTION |
指定驅動程式報告失敗的方式。 PDO::ERRMODE_SILENT (預設值) 會設定錯誤碼和資訊。 PDO::ERRMODE_WARNING 會引發 E_WARNING。 PDO::ERRMODE_EXCEPTION 會擲回例外狀況。 此屬性可以使用 PDO::setAttribute 來設定。 |
PDO::ATTR_ORACLE_NULLS | PDO | 請參閱 PDO 文件。 | 指定應如何傳回 Null。 PDO::NULL_NATURAL 不會執行任何轉換。 PDO::NULL_EMPTY_STRING 會將空字串轉換為 Null。 PDO::NULL_TO_STRING 會將 Null 轉換為空字串。 |
PDO::ATTR_STATEMENT_CLASS | PDO | 請參閱 PDO 文件。 | 設定衍生自 PDOStatement 的使用者提供陳述式類別。 需要 array(string classname, array(mixed constructor_args)) 。如需詳細資訊,請參閱 PDO 文件。 |
PDO::ATTR_STRINGIFY_FETCHES | PDO | true 或 false | 在擷取資料時,將數值轉換為字串。 |
PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | 1 到 PHP 記憶體限制。 | 設定使用用戶端資料指標時,將保留結果集的緩衝區大小。 如果未在 php.ini 檔案中指定,則預設值為 10240 KB。 不允許使用零和負數。 如需建立用戶端資料指標之查詢的詳細資訊,請參閱資料指標類型 (PDO_SQLSRV 驅動程式)。 |
PDO::SQLSRV_ATTR_DECIMAL_PLACES | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | 介於 0 和 4 (含) 之間的整數 | 指定將擷取的貨幣值格式化時的小數位數。 將忽略任何大於 4 的負整數或值。 此選項只有在 PDO::SQLSRV_ATTR_FORMAT_DECIMALS 為 true 時適用。 此選項也可在陳述式層級設定。 如果是,則陳述式層級選項會覆寫此選項。 如需詳細資訊,請參閱將十進位字串及貨幣值格式化 (PDO_SQLSRV 驅動程式)。 |
PDO::SQLSRV_ATTR_DIRECT_QUERY | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | true 或 false | 指定直接或備妥的查詢執行。 如需詳細資訊,請參閱 PDO_SQLSRV 驅動程式中的直接陳述式執行和已備妥的陳述式執行。 |
PDO::SQLSRV_ATTR_ENCODING | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | PDO::SQLSRV_ENCODING_UTF8 PDO::SQLSRV_ENCODING_SYSTEM. |
設定驅動程式用來與伺服器通訊的字元集編碼。 不支援 PDO::SQLSRV_ENCODING_BINARY。 預設值為 PDO::SQLSRV_ENCODING_UTF8。 |
PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | true 或 false | 指定是否要以 PHP DateTime \(英文\) 物件形式擷取日期和時間類型。 如果保留 false,則預設行為是以字串形式傳回它們。 此選項也可在陳述式層級設定。 如果是,則陳述式層級選項會覆寫此選項。 如需詳細資訊,請參閱如何:使用 PDO_SQLSRV 驅動程式以 PHP DateTime 物件形式擷取日期和時間類型。 |
PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | true 或 false | 處理從數值 SQL 類型 (bit、integer、smallint、tinyint、float 及 real) 資料行擷取的數值。 開啟連線選項旗標 ATTR_STRINGIFY_FETCHES 時,即使已開啟 SQLSRV_ATTR_FETCHES_NUMERIC_TYPE,傳回的值還是字串。 若繫結資料行中傳回的 PDO 類型為 PDO_PARAM_INT,即使已關閉 SQLSRV_ATTR_FETCHES_NUMERIC_TYPE,整數資料行的傳回值還是 int。 |
PDO::SQLSRV_ATTR_FORMAT_DECIMALS | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | true 或 false | 指定是否要在適當時於十進位字串中新增前置零。 如果設定,此選項就會啟用 PDO::SQLSRV_ATTR_DECIMAL_PLACES 選項來將貨幣類型格式化。 如果保留 False,則使用傳回精確的有效位數,並針對小於 1 的值省略前置零的預設行為。 此選項也可在陳述式層級設定。 如果是,則陳述式層級選項會覆寫此選項。 如需詳細資訊,請參閱將十進位字串及貨幣值格式化 (PDO_SQLSRV 驅動程式)。 |
PDO::SQLSRV_ATTR_QUERY_TIMEOUT | 用於 SQL Server 之 PHP 的 Microsoft 驅動程式 | 整數 | 設定查詢逾時 (以秒為單位)。 預設值為 0,表示驅動程式將會無限期地等候結果。 不允許使用負數。 |
PDO 會處理一些預先定義的屬性,且需要驅動程式才能處理其他屬性。 驅動程式會處理所有的自訂屬性和連接選項。 不支援的屬性、連線選項或不支援的值會根據 PDO::ATTR_ERRMODE 的設定來報告。
PDO 支援已新增至 Microsoft Drivers for PHP for SQL Server 2.0 版。
範例
此範例說明如何設定 PDO::ATTR_ERRMODE 屬性。
<?php
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=(local) ; Database = $database", "", "");
$attributes1 = array( "ERRMODE" );
foreach ( $attributes1 as $val ) {
echo "PDO::ATTR_$val: ";
var_dump ($conn->getAttribute( constant( "PDO::ATTR_$val" ) ));
}
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$attributes1 = array( "ERRMODE" );
foreach ( $attributes1 as $val ) {
echo "PDO::ATTR_$val: ";
var_dump ($conn->getAttribute( constant( "PDO::ATTR_$val" ) ));
}
?>