CakeFest 2024: The Official CakePHP Conference

sqlsrv_connect

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

sqlsrv_connectOuvre une connexion sur une base de données Microsoft SQL Server

Description

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

Ouvre une connexion sur une base de données Microsoft SQL Server. Par défaut, la connexion tente d'utiliser l'authentification Windows. Pour se connecter en utilisant l'authentification SQL Server, ajouter l'"UID" et le "PWD" dans le tableau d'options de connexion.

Liste de paramètres

serverName

Le nom du serveur sur lequel nous souhaitons réaliser une connexion. Pour se connecter sur une instance particulière, faites suivre le nom du serveur, puis un antislash, puis le nom de l'instance (i.e. serverName\sqlexpress).

connectionInfo

Un tableau associatif spécifiant les options pour la connexion sur le serveur. Si les valeurs des clés UID et PWD ne sont pas spécifiées, la connexion tentera d'utiliser l'authentification Windows. Pour une liste complète des clés supportées, reportez-vous aux » options de connexion SQLSRV.

Valeurs de retour

Une ressource de connexion. Si la connexion n'a pu être ouverte, false sera retourné.

Exemples

Exemple #1 Connexion en utilisant l'authentification Windows.

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

// Vu que UID et PWD ne sont pas spécifiés dans le tableau $connectionInfo,
// la connexion va tenter d'utiliser l'authentification Windows.
$connectionInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if(
$conn ) {
echo
"Connexion établie.<br />";
}else{
echo
"La connexion n'a pu être établie.<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

Exemple #2 Connexion en spécifiant un nom d'utilisateur et un mot de passe.

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

if(
$conn ) {
echo
"Connexion établie.<br />";
}else{
echo
"La connexion n'a pu être établie.<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

Exemple #3 Connexion sur un port spécifique.

<?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
"Connexion établie.<br />";
}else{
echo
"La connexion n'a pu être établie.<br />";
die(
print_r( sqlsrv_errors(), true));
}
?>

Notes

Par défaut, la fonction sqlsrv_connect() utilise la file d'attente de connexion afin d'augmenter les performances. Pour désactiver cette file d'attente (i.e. et ainsi, forcer une nouvelle connexion à chaque appel à la fonction), définissez l'option "ConnectionPooling" dans le tableau $connectionOptions à 0 (ou false). Pour plus d'informations reportez-vous au chapitre sur la » file d'attente de connexions SQLSRV.

L'extension SQLSRV n'a pas de fonction dédiée pour modifier la base de données sur laquelle l'extension est connecté. La base de données cible est spécifiée dans le tableau $connectionOptions passé à la fonction sqlsrv_connect. Pour changer la base de données sur une connexion ouverte, exécutez la requête suivante : "USE dbName" (i.e. sqlsrv_query($conn, "USE dbName")).

Voir aussi

  • sqlsrv_close() - Clôture une connexion établie et libère les ressources associées
  • sqlsrv_errors() - Retourne une erreur ainsi que certaines informations sur la dernière opération SQLSRV effectuée
  • sqlsrv_query() - Prépare et exécute une requête

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