sqlsrv_connect

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

sqlsrv_connectOpens a connection to a Microsoft SQL Server database

说明

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

Opens a connection to a Microsoft SQL Server database. By default, the connection is attempted using Windows Authentication. To connect using SQL Server Authentication, include "UID" and "PWD" in the connection options array.

参数

serverName

The name of the server to which a connection is established. To connect to a specific instance, follow the server name with a backward slash and the instance name (e.g. serverName\sqlexpress).

connectionInfo

An associative array that specifies options for connecting to the server. If values for the UID and PWD keys are not specified, the connection will be attempted using Windows Authentication. For a complete list of supported keys, see » SQLSRV Connection Options.

返回值

A connection resource. If a connection cannot be successfully opened, false is returned.

范例

Example #1 Connect using Windows Authentication.

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

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"dbName");
$conn sqlsrv_connect$serverName$connectionInfo);

if( 
$conn ) {
     echo 
"Connection established.<br />";
}else{
     echo 
"Connection could not be established.<br />";
     die( 
print_rsqlsrv_errors(), true));
}
?>

Example #2 Connect by specifying a user name and password.

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

if( 
$conn ) {
     echo 
"Connection established.<br />";
}else{
     echo 
"Connection could not be established.<br />";
     die( 
print_rsqlsrv_errors(), true));
}
?>

Example #3 Connect on a specified port.

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

if( 
$conn ) {
     echo 
"Connection established.<br />";
}else{
     echo 
"Connection could not be established.<br />";
     die( 
print_rsqlsrv_errors(), true));
}
?>

注释

By default, the sqlsrv_connect() uses connection pooling to improve connection performance. To turn off connection pooling (i.e. force a new connection on each call), set the "ConnectionPooling" option in the $connectionOptions array to 0 (or false). For more information, see » SQLSRV Connection Pooling.

The SQLSRV extension does not have a dedicated function for changing which database is connected to. The target database is specified in the $connectionOptions array that is passed to sqlsrv_connect. To change the database on an open connection, execute the following query "USE dbName" (e.g. sqlsrv_query($conn, "USE dbName")).

参见

  • sqlsrv_close() - Closes an open connection and releases resourses associated with the connection
  • sqlsrv_errors() - Returns error and warning information about the last SQLSRV operation performed
  • sqlsrv_query() - Prepares and executes a query

User Contributed Notes

Anonymous 20-Jun-2019 06:38
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);
?>
mmi at uhb-consulting dot de 05-Sep-2018 06:57
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
manav at drupal.org/u/manav 23-Jan-2018 10:16
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.
jucabe9979 at hotmail dot com 16-Feb-2017 11:11
What happen if i have a sql_variant data? how can I reed that data?
alvaro at demogracia dot com 08-Sep-2016 09:00
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
Eion Robb 07-Oct-2015 03:16
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
Gilly 30-Sep-2015 12:28
In order to connect using Windows Authentication (on Windows) for Wamp/Xamp installations you should verify that the apache service is running under a user who can connect to SQL Server and not under a local user.