常數 (Microsoft Drivers for PHP for SQL Server)
本主題討論 Microsoft Drivers for PHP for SQL Server 所定義的常數。
PDO_SQLSRV 驅動程式常數
PDO 網站上所列的常數在 Microsoft Drivers for PHP for SQL Server 中有效。
以下描述 PDO_SQLSRV 驅動程式中的 Microsoft 特定常數。
交易隔離等級常數
TransactionIsolation 索引鍵,可與 PDO::__construct搭配使用,並接受下列其中一個常數:
PDO::SQLSRV_TXN_READ_UNCOMMITTED
PDO::SQLSRV_TXN_READ_COMMITTED
PDO::SQLSRV_TXN_REPEATABLE_READ
PDO::SQLSRV_TXN_SNAPSHOT
PDO::SQLSRV_TXN_SERIALIZABLE
如需 TransactionIsolation 索引鍵的詳細資訊,請參閱 Connection Options。
編碼常數
PDO::SQLSRV_ATTR_ENCODING 屬性可以傳遞至 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、PDOStatement::bindColumn 和 PDOStatement::bindParam。
可傳遞至 PDO::SQLSRV_ATTR_ENCODING 的值為
PDO_SQLSRV 驅動程式常數 | 描述 |
---|---|
PDO::SQLSRV_ENCODING_BINARY | 資料是來自伺服器的原始位元組資料流,未執行編碼或轉譯。 對 PDO::setAttribute 而言無效。 |
PDO::SQLSRV_ENCODING_SYSTEM | 資料是 8 位元字元,如同在系統上設定之 Windows 地區設定的字碼頁所指定。 系統會以單一位元組問號 (?) 字元取代任何多位元組字元或未對應到此字碼頁的字元。 |
PDO::SQLSRV_ENCODING_UTF8 | 資料採用 UTF-8 編碼。 這是預設編碼。 |
PDO::SQLSRV_ENCODING_DEFAULT | 如果在連接期間指定,則使用 PDO::SQLSRV_ENCODING_SYSTEM。 若已在準備陳述式中指定編碼,則使用連線的編碼。 |
查詢逾時
PDO::SQLSRV_ATTR_QUERY_TIMEOUT 屬性是任何代表逾時期間 (秒) 的非負數整數。 零 (0) 預設值,表示沒有逾時。
您可以使用 PDOStatement::setAttribute、PDO::setAttribute 和 PDO::prepare 來指定 PDO::SQLSRV_ATTR_QUERY_TIMEOUT 屬性。
直接或備妥的執行
您可以使用 PDO::SQLSRV_ATTR_DIRECT_QUERY 屬性,選取直接查詢執行或備妥的陳述式執行。 PDO::SQLSRV_ATTR_DIRECT_QUERY 可以用 PDO::prepare 或 PDO::setAttribute 來設定。 如需 PDO::SQLSRV_ATTR_DIRECT_QUERY 的詳細資訊,請參閱 PDO_SQLSRV 驅動程式中的直接陳述式執行和已備妥的陳述式執行。
處理數值擷取
PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE 屬性可以用來處理具有數值 SQL 類型 (bit、integer、smallint、tinyint、float 和 real) 之資料行的數值擷取。 當 PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE 設定為 true 時,來自整數資料行的結果會表示為 ints,而 SQL 浮點數和實數表示為浮點數。 此屬性可以使用 PDOStatement::setAttribute 來設定。
您可以使用 PDO::SQLSRV_ATTR_FORMAT_DECIMALS 和 PDO::SQLSRV_ATTR_DECIMAL_PLACES 屬性來修改預設的十進位格式設定行為。 這些屬性的行為等同於 SQLSRV 端的對應選項 (FormatDecimals 和 DecimalPlaces),不同之處在於不支援輸出參數進行格式設定。 您可以使用 PDO::setAttribute 或 PDOStatement::setAttribute,在連線或陳述式等級設定這些屬性,但任何陳述式屬性都會覆寫對應的連線屬性。 如需詳細資訊,請參閱將十進位字串及貨幣值格式化 (PDO_SQLSRV 驅動程式)。
處理日期和時間擷取
PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE 指定是否要以 PHP DateTime \(英文\) 物件形式擷取日期和時間類型。 如果保留 false,則預設行為是以字串形式傳回它們。 這個屬性可以在連線或陳述式等級使用 PDO::setAttribute 或 PDOStatement::setAttribute 來設定,但是陳述式屬性將會覆寫對應的連線屬性。 如需詳細資訊,請參閱如何:使用 PDO_SQLSRV 驅動程式以 PHP DateTime 物件形式擷取日期和時間類型。
SQLSRV 驅動程式常數
下列各節列出 SQLSRV 驅動程式所使用的常數。
ERR 常數
下表列出用來指定 sqlsrv_errors 會傳回錯誤、警告還是兩者都傳回的常數。
值 | 描述 |
---|---|
SQLSRV_ERR_ALL | 傳回上次呼叫 sqlsrv 函數時產生的錯誤和警告。 這是預設值。 |
SQLSRV_ERR_ERRORS | 傳回上次呼叫 sqlsrv 函數時產生的錯誤。 |
SQLSRV_ERR_WARNINGS | 傳回上次呼叫 sqlsrv 函數時產生的警告。 |
FETCH 常數
下表列出用來指定 sqlsrv_fetch_array所傳回之陣列類型的常數。
SQLSRV 常數 | 描述 |
---|---|
SQLSRV_FETCH_ASSOC | sqlsrv_fetch_array 會以關聯陣列的形式傳回下一個資料列。 |
SQLSRV_FETCH_BOTH | sqlsrv_fetch_array 會以同時具有數值和關聯索引鍵的陣列形式傳回下一個資料列。 這是預設值。 |
SQLSRV_FETCH_NUMERIC | sqlsrv_fetch_array 會以數值索引陣列的形式傳回下一個資料列。 |
記錄常數
此節列出用來透過 sqlsrv_configure變更記錄設定的常數。 如需記錄活動的詳細資訊,請參閱 Logging Activity。
下表列出可做為 LogSubsystems 設定值的常數:
SQLSRV 常數 (括弧中的整數對等項目) | 描述 |
---|---|
SQLSRV_LOG_SYSTEM_ALL (-1) | 開啟所有子系統的記錄。 |
SQLSRV_LOG_SYSTEM_CONN (2) | 開啟連接活動的記錄。 |
SQLSRV_LOG_SYSTEM_INIT (1) | 開啟初始化活動的記錄。 |
SQLSRV_LOG_SYSTEM_OFF (0) | 關閉記錄。 |
SQLSRV_LOG_SYSTEM_STMT (4) | 開啟陳述式活動的記錄。 |
SQLSRV_LOG_SYSTEM_UTIL (8) | 開啟錯誤函式活動 (例如 handle_error 和 handle_warning) 的記錄。 |
下表列出可做為 LogSeverity 設定值的常數:
SQLSRV 常數 (括弧中的整數對等項目) | 描述 |
---|---|
SQLSRV_LOG_SEVERITY_ALL (-1) | 指定將會記錄錯誤、警告和通知。 |
SQLSRV_LOG_SEVERITY_ERROR (1) | 指定將會記錄錯誤。 |
SQLSRV_LOG_SEVERITY_NOTICE (4) | 指定將會記錄通知。 |
SQLSRV_LOG_SEVERITY_WARNING (2) | 指定將會記錄警告。 |
Nullable 常數
下表列出可用來判斷資料行是否可為 Null 或這項資訊是否無法使用的常數。 您可以比較 sqlsrv_field_metadata 所傳回的 Nullable 索引鍵值,以判斷資料行可為 Null 的狀態。
SQLSRV 常數 (括弧中的整數對等項目) | 描述 |
---|---|
SQLSRV_NULLABLE_YES (0) | 此資料行可為 null。 |
SQLSRV_NULLABLE_NO (1) | 資料行不可為 Null。 |
SQLSRV_NULLABLE_UNKNOWN (2) | 不知道資料行是否可為 Null。 |
PARAM 常數
下列清單包含在您呼叫 sqlsrv_query 或 sqlsrv_prepare時用來指定參數方向的常數。
SQLSRV 常數 | 描述 |
---|---|
SQLSRV_PARAM_IN | 表示輸入參數。 |
SQLSRV_PARAM_INOUT | 表示雙向參數。 |
SQLSRV_PARAM_OUT | 表示輸出參數。 |
PHPTYPE 常數
下表列出用來說明 PHP 資料類型的常數。 如需 PHP 資料類型的資訊,請參閱 PHP 類型。
SQLSRV 常數 | PHP 資料類型 |
---|---|
SQLSRV_PHPTYPE_INT | 整數 |
SQLSRV_PHPTYPE_DATETIME | Datetime |
SQLSRV_PHPTYPE_FLOAT | Float |
SQLSRV_PHPTYPE_STREAM($encoding1) | 資料流 |
SQLSRV_PHPTYPE_STRING($encoding1) | String |
- SQLSRV_PHPTYPE_STREAM 和 SQLSRV_PHPTYPE_STRING 可接受指定資料流編碼的參數。 下表包含是可接受之參數的 SQLSRV 常數,以及對應編碼的描述。
SQLSRV 常數 | 描述 |
---|---|
SQLSRV_ENC_BINARY | 資料會以原始位元組資料流形式從伺服器傳回,而不需執行編碼或轉譯。 |
SQLSRV_ENC_CHAR | 資料會以如同在系統上設定之 Windows 地區設定的字碼頁中指定的 8 位元字元傳回。 系統會以單一位元組問號 (?) 字元取代任何多位元組字元或未對應到此字碼頁的字元。 這是預設編碼。 |
"UTF-8" | 資料會以 UTF-8 編碼傳回。 已將此常數新增至 Microsoft Drivers for PHP for SQL Server 1.1 版。 如需 UTF-8 支援的詳細資訊,請參閱如何:使用內建的 UTF-8 支援傳送及接收 UTF-8 資料。 |
注意
當您使用 SQLSRV_PHPTYPE_STREAM 或 SQLSRV_PHPTYPE_STRING 時,必須要指定編碼。 如果未提供參數,將會傳回錯誤。
如需這些常數的詳細資訊,請參閱 如何:指定 PHP 資料類型、 如何:使用 SQLSRV 驅動程式以資料流的形式擷取字元資料。
SQLTYPE 常數
下表列出用來說明 SQL Server 資料類型的常數。 某些常數類似於函式,需要採用對應至精確度、小數位數和/或長度的參數。 繫結參數時,應該使用類似函式的常數。 針對類型比較,需要標準 (非類似函式) 常數。 如需 SQL Server 資料類型的詳細資訊,請參閱資料類型 (Transact-SQL)。如需整數位數、小數位數與長度的資訊,請參閱整數位數、小數位數與長度 (Transact-SQL)。
SQLSRV 常數 | SQL Server 資料類型 |
---|---|
SQLSRV_SQLTYPE_BIGINT | BIGINT |
SQLSRV_SQLTYPE_BINARY | BINARY |
SQLSRV_SQLTYPE_BIT | bit |
SQLSRV_SQLTYPE_CHAR | char5 |
SQLSRV_SQLTYPE_CHAR($charCount) | char |
SQLSRV_SQLTYPE_DATE | date4 |
SQLSRV_SQLTYPE_DATETIME | Datetime |
SQLSRV_SQLTYPE_DATETIME2 | datetime24 |
SQLSRV_SQLTYPE_DATETIMEOFFSET | datetimeoffset4 |
SQLSRV_SQLTYPE_DECIMAL | decimal5 |
SQLSRV_SQLTYPE_DECIMAL($precision, $scale) | decimal |
SQLSRV_SQLTYPE_FLOAT | FLOAT |
SQLSRV_SQLTYPE_IMAGE | image1 |
SQLSRV_SQLTYPE_INT | int |
SQLSRV_SQLTYPE_MONEY | money |
SQLSRV_SQLTYPE_NCHAR | nchar5 |
SQLSRV_SQLTYPE_NCHAR($charCount) | NCHAR |
SQLSRV_SQLTYPE_NUMERIC | numeric5 |
SQLSRV_SQLTYPE_NUMERIC($precision, $scale) | NUMERIC |
SQLSRV_SQLTYPE_NVARCHAR | nvarchar5 |
SQLSRV_SQLTYPE_NVARCHAR($charCount) | NVARCHAR |
SQLSRV_SQLTYPE_NVARCHAR('max') | nvarchar(MAX) |
SQLSRV_SQLTYPE_NTEXT | ntext2 |
SQLSRV_SQLTYPE_REAL | real |
SQLSRV_SQLTYPE_SMALLDATETIME | smalldatetime |
SQLSRV_SQLTYPE_SMALLINT | SMALLINT |
SQLSRV_SQLTYPE_SMALLMONEY | SMALLMONEY |
SQLSRV_SQLTYPE_TEXT | text3 |
SQLSRV_SQLTYPE_TIME | time4 |
SQLSRV_SQLTYPE_TIMESTAMP | timestamp |
SQLSRV_SQLTYPE_TINYINT | TINYINT |
SQLSRV_SQLTYPE_UNIQUEIDENTIFIER | UNIQUEIDENTIFIER |
SQLSRV_SQLTYPE_UDT | UDT |
SQLSRV_SQLTYPE_VARBINARY | varbinary5 |
SQLSRV_SQLTYPE_VARBINARY($byteCount) | varbinary |
SQLSRV_SQLTYPE_VARBINARY('max') | varbinary(MAX) |
SQLSRV_SQLTYPE_VARCHAR | varchar5 |
SQLSRV_SQLTYPE_VARCHAR($charCount) | varchar |
SQLSRV_SQLTYPE_VARCHAR('max') | varchar(MAX) |
SQLSRV_SQLTYPE_XML | Xml |
這是對應至 varbinary(max) 類型的傳統類型。
這是對應至較新 nvarchar 類型的傳統類型。
這是對應至較新 varchar 類型的傳統類型。
已將此類型支援新增至 Microsoft Drivers for PHP for SQL Server 1.1 版。
這些常數應該用於類型比較作業中,而且不會以類似的語法取代類似函式的常數。 針對繫結參數,您應該使用類似函式的常數。
下表列出接受參數的 SQLTYPE 常數,以及允許的參數值範圍。
SQLTYPE | 參數 | 允許的參數範圍 |
---|---|---|
SQLSRV_SQLTYPE_CHAR、 SQLSRV_SQLTYPE_VARCHAR |
charCount | 1 - 8000 |
SQLSRV_SQLTYPE_NCHAR、 SQLSRV_SQLTYPE_NVARCHAR |
charCount | 1 - 4000 |
SQLSRV_SQLTYPE_BINARY、 SQLSRV_SQLTYPE_VARBINARY |
byteCount | 1 - 8000 |
SQLSRV_SQLTYPE_DECIMAL、 SQLSRV_SQLTYPE_NUMERIC |
精確度 | 1 - 38 |
SQLSRV_SQLTYPE_DECIMAL、 SQLSRV_SQLTYPE_NUMERIC |
級別 | 1 - 有效位數 |
交易隔離等級常數
TransactionIsolation 索引鍵,可與 sqlsrv_connect搭配使用,並接受下列其中一個常數:
SQLSRV_TXN_READ_UNCOMMITTED
SQLSRV_TXN_READ_COMMITTED
SQLSRV_TXN_REPEATABLE_READ
SQLSRV_TXN_SNAPSHOT
SQLSRV_TXN_SERIALIZABLE
資料指標和捲動常數
下列常數指定您可以在結果集內使用的資料指標類型:
SQLSRV_CURSOR_FORWARD
SQLSRV_CURSOR_STATIC
SQLSRV_CURSOR_DYNAMIC
SQLSRV_CURSOR_KEYSET
SQLSRV_CURSOR_CLIENT_BUFFERED
下列常數指定要在結果集內選取的資料列:
SQLSRV_SCROLL_NEXT
SQLSRV_SCROLL_PRIOR
SQLSRV_SCROLL_FIRST
SQLSRV_SCROLL_LAST
SQLSRV_SCROLL_ABSOLUTE
SQLSRV_SCROLL_RELATIVE
如需使用這些常數的相關資訊,請參閱 Specifying a Cursor Type and Selecting Rows。