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
"连接已建立。
"
;
}else{
echo
"无法建立连接。
"
;
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
"连接已建立。
"
;
}else{
echo
"无法建立连接。
"
;
die(
print_r( sqlsrv_errors(), true));
}
?>

示例 #3 在指定的端口上连接。

<?php
$serverName
= "serverName\\sqlexpress, 1542"; //serverName\instanceName, portNumber (默认值为 1433)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"连接已建立。
"
;
}else{
echo
"无法建立连接。
"
;
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}() 函数将日期/时间/日期时间作为字符串返回,请指定
'ReturnDatesAsStrings' => true
在 $connectionInfo 数组中。

有关此行为的更多信息,请参阅 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