PDOStatement::setAttribute
設定屬性值,可以是預先定義的 PDO 屬性,或自訂的驅動程式屬性。
語法
bool PDOStatement::setAttribute ($attribute, $value );
參數
$attribute:一個整數,是 PDO::ATTR_* 或 PDO::SQLSRV_ATTR_* 常數的其中之一。 如需可用屬性清單,請參閱「備註」一節。
$value:要為指定的 $attribute 設定的 (混合) 值。
傳回值
成功時傳回 TRUE,否則傳回 FALSE。
備註
下表包含可用屬性清單:
屬性 | 值 | 描述 |
---|---|---|
PDO::SQLSRV_ATTR_CLIENT_BUFFER_MAX_KB_SIZE | 1 到 PHP 記憶體限制。 | 設定將保留用戶端資料指標結果集的緩衝區大小。 預設值為 10,240 KB (10 MB)。 如需用戶端資料指標的詳細資訊,請參閱資料指標類型 (PDO_SQLSRV Driver)。 |
PDO::SQLSRV_ATTR_DATA_CLASSIFICATION | true 或 false | 指定是否要在呼叫 PDOStatement::getColumnMeta 時擷取資料分類中繼資料。 預設為 false。 |
PDO::SQLSRV_ATTR_DECIMAL_PLACES | 介於 0 和 4 (含) 之間的整數 | 指定將擷取的貨幣值格式化時的小數位數。 將忽略任何大於 4 的負整數或值。 此選項只有在 PDO::SQLSRV_ATTR_FORMAT_DECIMALS 為 true 時適用。 此選項也可在連線層級設定。 如果是,則此選項會覆寫連線層級選項。 如需詳細資訊,請參閱將十進位字串及貨幣值格式化 (PDO_SQLSRV 驅動程式)。 |
PDO::SQLSRV_ATTR_ENCODING | 整數 PDO::SQLSRV_ENCODING_UTF8 (預設值) PDO::SQLSRV_ENCODING_SYSTEM PDO::SQLSRV_ENCODING_BINARY |
設定驅動程式用來與伺服器通訊的字元集編碼。 |
PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE | true 或 false | 指定是否要以 PHP DateTime \(英文\) 物件形式擷取日期和時間類型。 如果保留 false,則預設行為是以字串形式傳回它們。 此選項也可在連線層級設定。 如果是,則此選項會覆寫連線層級選項。 如需詳細資訊,請參閱如何:使用 PDO_SQLSRV 驅動程式以 PHP DateTime 物件形式擷取日期和時間類型。 |
PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE | 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 | true 或 false | 指定是否要在適當時於十進位字串中新增前置零。 如果設定,此選項就會啟用 PDO::SQLSRV_ATTR_DECIMAL_PLACES 選項來將貨幣類型格式化。 如果保留 False,則使用傳回精確的有效位數,並針對小於 1 的值省略前置零的預設行為。 此選項也可在連線層級設定。 如果是,則此選項會覆寫連線層級選項。 如需詳細資訊,請參閱將十進位字串及貨幣值格式化 (PDO_SQLSRV 驅動程式)。 |
PDO::SQLSRV_ATTR_QUERY_TIMEOUT | 整數 | 設定查詢逾時 (以秒為單位)。 根據預設,驅動程式將會無限期地等候結果。 不允許使用負數。 0 表示無逾時。 |
範例
<?php
$database = "AdventureWorks";
$server = "(local)";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "", array('MultipleActiveResultSets'=>false ) );
$stmt = $conn->prepare('SELECT * FROM Person.ContactType');
echo $stmt->getAttribute( constant( "PDO::ATTR_CURSOR" ) );
echo "\n";
$stmt->setAttribute(PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 2);
echo $stmt->getAttribute( constant( "PDO::SQLSRV_ATTR_QUERY_TIMEOUT" ) );
?>