PHP 8.1.28 Released!

sqlsrv_connect

(No version information available, might only be in Git)

sqlsrv_connectОткрывает соединение с базой данных Microsoft SQL Server

Описание

sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource

Открывает соединение с базой данных 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

// Поскольку UID и PWD не указаны в массиве $connectionInfo,
// будет предпринята попытка подключения с использованием проверки подлинности 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"; //serverName\instanceName, portNumber (по умолчанию 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() использует пул соединений для повышения производительности соединения. Чтобы отключить пул соединений (т.е. принудительно устанавливать новое соединение при каждом вызове), установите для параметра "ConnectionPooling" в массиве $connectionOptions значение 0 (или false). Для получения дополнительной информации смотрите раздел » Пул соединений SQLSRV.

У модуля SQLSRV нет специальной функции для изменения базы данных после подключения. Целевая база данных указывается в массиве $connectionOptions, который передаётся в sqlsrv_connect. Чтобы изменить базу данных при открытом соединении, выполните следующий запрос "USE dbName" (например, sqlsrv_query($conn, "USE dbName")).

Смотрите также

  • sqlsrv_close() - Закрывает открытое соединение и освобождает ресурсы, связанные с этим соединением
  • sqlsrv_errors() - Возвращает информацию об ошибке и предупреждении последней выполненной операции SQLSRV
  • sqlsrv_query() - Подготавливает и выполняет запрос

add a note

User Contributed Notes 5 notes

up
5
Eion Robb
8 years ago
As mentioned at https://msdn.microsoft.com/en-us/library/cc296193.aspx the connection will convert some data into PHP data types. Of particular difference to other database functions in PHP is that dates will be output as objects instead of strings.

To make the sqlsrv_fetch_{array|object}() functions return dates/times/datetimes as strings instead, specify:
'ReturnDatesAsStrings' => true
in the $connectionInfo array.

For more info about this behaviour, see https://msdn.microsoft.com/en-us/library/ee376928.aspx
up
4
alvaro at demogracia dot com
7 years ago
You can use the connectionInfo parameter to specify connection encoding, e.g.:

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

Beware though that only two options exist:
- SQLSRV_ENC_CHAR (constant) for ANSI, which is the default
- 'UTF-8' (string) for Unicode
up
-6
mmi at uhb-consulting dot de
5 years ago
to prevent [Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation Errors on Linux
you must add the Connection Parameter 'CharacterSet' => "UTF-8"

Tested with with Driver Version 5.3
up
-23
manav at drupal.org/u/manav
6 years ago
If anybody wants to use
<?php
//..
sqlsrv_connect();
//..
?> method to Fedora-25 then user have to install PECL php-sqlsrv library to connect ms-sql server remotely in php script.
In my case i found the same issue but after some search i got this solution and implement it.... now it works.
up
-57
Anonymous
4 years ago
SQL SERVER 2012 conexion in PHP
<?php
$serverName
= "SERVER"; //serverName\instanceName
$connectionInfo = array( "Database"=>"base", "UID"=>"ex", "PWD"=>"******");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
;

if(
$conn ) {
echo
"Conexión establecida.<br />";
}else{
echo
"Conexión no se pudo establecer.<br />";
die(
print_r( sqlsrv_errors(), true));
}

$sql = "SELECT name FROM [base].[dbo].[table]";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query( $conn, $sql , $params, $options );

$row_count = sqlsrv_num_rows( $stmt );


if (
$row_count === false)
echo
"Error al obtener datos.";
else
echo
"bien";
//echo $row_count;

while( $row = sqlsrv_fetch_array( $stmt) ) {
print
json_encode($row);
}

sqlsrv_close($conn);
?>
To Top