下載 PHP 驅動程式
進行執行陳述式的準備。
$陳述式
包含 SQL 語句的字串。
key_pair
陣列,包含屬性名稱和值。 如需詳細資訊,請參閱備註一節。
傳回成功時的物件。 失敗時,會 根據的值 傳回 物件或 false。
Microsoft Drivers for PHP for SQL Server 在執行之前不會評估備妥的語句。
下表列出可能的 key_pair 值。
例如: 。pdo
當設定為 時,您可以使用 來設定可捲動數據指標的類型,本文稍後會加以說明。
如需驅動程式中結果集和數據指標的詳細資訊,請參閱數據指標類型(PDO_SQLSRV驅動程式)。
使用 時,您可以使用 來指定資料指標的類型。 例如,將下列陣列傳遞至 以設定動態資料指標:
下表會顯示 的可能值。 如需可捲動資料指標的詳細資訊,請參閱資料指標類型 (PDO_SQLSRV 驅動程式)。
意指 。
您可以呼叫 來關閉 物件:
此範例示範如何搭配參數標記和正向數據指標使用 。
此範例示範如何搭配伺服器端靜態數據指標使用 。 如需顯示用戶端資料指標的範例,請參閱資料指標類型 (PDO_SQLSRV 驅動程式)。
下列兩個代碼段示範如何搭配以 char / varchar 數據行為目標的數據搭配使用。 因為的預設編碼 是UTF-8,因此使用者可以使用 選項 來避免隱含轉換。
選項 1
選項 2
此範例示範如何搭配設定為 true 的 來使用 PDO::prepare。
驅動程式會在內部以 PDOStatement::bindParam() 所系結的參數取代所有佔位元。 因此,會將不含任何預留位置的 SQL 查詢字串傳送至伺服器。 請考慮此範例:
藉由將 設定為 false (預設情況),傳送至資料庫的資料為:
伺服器會使用係結參數的參數化查詢功能來執行查詢。 另一方面,藉由將 設定為 true,傳送至伺服器的查詢本質上為:
將 設定為 true,可以略過 SQL Server 中的一些限制。 例如,SQL Server 不支援某些 Transact-SQL 子句中的具名或位置參數。 此外,SQL Server 有系結 2,100 個參數的限制。
如果使用者想要繫結含不同編碼 (例如 UTF-8 或二進位) 的參數,則使用者應該明確地在 PHP 指令碼中指定編碼。
驅動程式 會先檢查 中指定的 編碼方式(例如 , 。
如果找不到,驅動程式就會檢查是否已在 或 中設定任何編碼。 否則,驅動程式會使用 或 中指定的編碼方式。
此外,從 5.8.0 版開始,使用 PDO::p repare 設定 為 true 時,使用者可以使用 PHP 7.2 中引進的擴充字元串類型,以確保 使用前置詞。 下列代碼段會顯示各種替代方案。
系結時使用驅動程式選項 PDO::SQLSRV_ENCODING_UTF8
使用 PDO::SQLSRV_ATTR_ENCODING 屬性
使用 PDO 常數 PDO::P ARAM_STR_NATL
設定預設字串參數類型 PDO::P ARAM_STR_NATL
如您所見,繫結會在內部由驅動程式來完成。 有效的查詢會在不含任何參數的情況下傳送到伺服器來執行。 相較於一般案例,參數化查詢功能未使用時,會產生一些限制。
- 它不適用於系結為 的參數。
- 當使用者在 中指定 時,即會擲回 PDO 例外狀況。
- 它不適用於係結為輸出參數的參數。
- 當使用者搭配用來作為輸出參數的預留位置 (也就是,在預留位置後面緊接著等號,例如 ) 建立已備妥的陳述式
時,即會擲回 PDO 例外狀況。 - 當備妥的語句使用佔位元作為輸出參數的自變數叫用預存程式時,不會擲回例外狀況,因為驅動程式無法偵測輸出參數。 不過,用戶為輸出參數提供的變數保持不變。
- 當使用者搭配用來作為輸出參數的預留位置 (也就是,在預留位置後面緊接著等號,例如 ) 建立已備妥的陳述式
- 二進位編碼參數的重複佔位元無法運作。
- PDO 類別
- PDO