PHP Conference Japan 2024

sqlsrv_connect

(沒有版本資訊,可能只在 Git 中)

sqlsrv_connect開啟與 Microsoft SQL Server 資料庫的連線

說明

sqlsrv_connect(字串 $serverName, 陣列 $connectionInfo = ?): 資源

開啟與 Microsoft SQL Server 資料庫的連線。預設情況下,嘗試使用 Windows 驗證進行連線。要使用 SQL Server 驗證進行連線,請在連線選項陣列中包含「UID」和「PWD」。

參數

serverName

建立連線的伺服器名稱。要連線到特定執行個體,請在伺服器名稱後加上反斜線和執行個體名稱(例如 serverName\sqlexpress)。

connectionInfo

一個關聯式陣列,指定連線到伺服器的選項。如果未指定 UID 和 PWD 鍵的值,則會嘗試使用 Windows 驗證進行連線。如需支援鍵的完整列表,請參閱 » SQLSRV 連線選項

傳回值

連線資源。如果無法成功開啟連線,則會傳回 false

範例

範例 #1 使用 Windows 驗證連線。

<?php
$serverName
= "serverName\\sqlexpress"; //serverName\instanceName

// 因為 $connectionInfo 陣列中未指定 UID 和 PWD,
// 將會嘗試使用 Windows 驗證進行連線。
$connectionInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"已建立連線。<br />";
}else{
echo
"無法建立連線。<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

範例 #2 透過指定使用者名稱和密碼進行連線。

<?php
$serverName
= "serverName\\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"已建立連線。<br />";
}else{
echo
"無法建立連線。<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

範例 #3 在指定的連接埠上連線。

<?php
$serverName
= "serverName\\sqlexpress, 1542"; //伺服器名稱\執行個體名稱, 連接埠號 (預設為 1433)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"連線成功。<br />";
}else{
echo
"無法建立連線。<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

注意事項

預設情況下,sqlsrv_connect() 使用連線池來提升連線效能。要關閉連線池(即每次呼叫時強制建立新連線),請將 $connectionOptions 陣列中的 "ConnectionPooling" 選項設定為 0(或 false)。更多資訊,請參閱 » SQLSRV 連線池

SQLSRV 擴充功能沒有專門用於更改連線資料庫的函式。目標資料庫是在傳遞給 sqlsrv_connect 的 $connectionOptions 陣列中指定的。要更改已開啟連線的資料庫,請執行以下查詢 "USE dbName"(例如 sqlsrv_query($conn, "USE dbName"))。

另請參閱

新增筆記

使用者提供的筆記 2 則筆記

Eion Robb
9 年前
如同 https://msdn.microsoft.com/en-us/library/cc296193.aspx 中提到的,連線會將一些資料轉換為 PHP 資料類型。與 PHP 中其他資料庫函式的特別不同之處在於,日期將以物件而不是字串輸出。

要使 sqlsrv_fetch_{array|object}() 函式以字串而不是物件的形式返回日期/時間/日期時間,請在 $connectionInfo 陣列中指定
'ReturnDatesAsStrings' => true


有關此行為的更多資訊,請參閱 https://msdn.microsoft.com/en-us/library/ee376928.aspx
alvaro at demogracia dot com
8 年前
您可以使用 connectionInfo 參數來指定連線編碼,例如:

<?php
$connectionInfo
= [
'CharacterSet' => 'UTF-8',
];
$conn = sqlsrv_connect($serverName, $connectionInfo);
?>

但請注意,只有兩個選項可用:
- SQLSRV_ENC_CHAR(常數)表示 ANSI 編碼,這是預設值
- 'UTF-8'(字串)表示 Unicode 編碼
To Top