Programmation PHP/Microsoft SQL Server
Installation Modifier
On distingue plusieurs pilotes PHP pour MS-SQL Server :
Windows Modifier
Pour se connecter au serveur MS-SQL à partir d'un tout-en-un comme EasyPHP, il suffit de télécharger les pilotes .dll[1] correspondant à sa version de PHP, puis d'indiquer leurs chemins dans le PHP.ini :
- Sous PHP 4, copier le fichier
php_mssql.dll
dans les extensions. - Pour PHP 5.4 :
- Télécharger les .dll SQL30
- Les copier dans
C:\PROGRA~2\EasyPHP\binaries\php\php_runningversion\ext
- Les ajouter dans
C:\PROGRA~2\EasyPHP\binaries\php\php_runningversion\php.ini
via les lignes suivantes[2] :extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll
- Dans PHP 5.5 on obtient toujours
Fatal error: Call to undefined function sqlsrv_connect()
, donc upgrader ou downgrader PHP. - Dans PHP 7 : cela fonctionne.
Pour vérifier l'installation, redémarrer le serveur Web, puis vérifier que la ligne pdo_sqlsrv
s’est bien ajoutée dans la configuration (ex : http://127.0.0.1/home/index.php?page=php-page&display=extensions
).
Linux Modifier
Pour se connecter au serveur MS-SQL, il suffit de télécharger les pilotes .so[3] correspondant à sa version de PHP, puis d'indiquer leurs chemins dans le PHP.ini[4] :
extension=php_pdo_sqlsrv_7_nts.so
extension=php_sqlsrv_7_nts.so
Pour vérifier l'installation, redémarrer le serveur Web, puis vérifier que la ligne pdo_sqlsrv
s’est bien ajoutée dans la configuration (ex : php -r "phpinfo();" |grep sql
).
Connexion Modifier
Pilote 1.1 SQL Server pour PHP Modifier
Ce pilote fournit des fonctions d’interaction avec Microsoft SQL Server. Il peut s'utiliser avec les version de SQL Server postérieure à 2005[5].
Alternative désuète Modifier
Les fonctions suivantes sont supprimées depuis PHP 7.0[6] :
$serverName = "(local)";
$connect = mssql_connect($serverName, "login", "password");
mssql_select_db("my_db", $connect)
// ... votre script
mssql_close($connect);
Alternative Doctrine Modifier
Les bibliothèques Doctrine utilisent cette syntaxe[8] :
$config = new \Doctrine\DBAL\Configuration();
$connectionParams = array(
'driver' => 'sqlsrv', // ou pdo_sqlsrv selon le pilote
'host' => $this->serverName,
'dbname' => $this->databaseName,
'user' => $this->userName,
'password' => $this->password,
);
$this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
$this->connection->query($query);
$this->connection->close();
Requête SQL Modifier
// ... connexion
$sql = "DELETE FROM ma_table WHERE colonne = '1' LIMIT 0,30";
if (!sqlsrv_query($connect, $sql)) {
die (sqlsrv_errors());
}
// ... déconnexion
Récupération des données Modifier
// ... connexion
$sql = "SELECT ville, pays, code_postal FROM table_clients WHERE code_postal = '78000' AND client_id = '44' LIMIT 1";
if (!$result = sqlsrv_query($connect, $sql)) {
die (sqlsrv_errors());
}
$client_data = sqlsrv_fetch_array($result);
extract($client_data);
echo $ville;
echo $pays;
echo $code_postal;
// ... déconnexion
Par défaut, sqlsrv_fetch_array()
renvoie deux tableaux imbriqués : le tableau itératif et l'associatif. Pour n'en sélectionner qu'un, il faut remplir son deuxième paramètre avec[9] :
SQLSRV_FETCH_ASSOC
: pour le tableau associatif.SQLSRV_FETCH_NUMERIC
: pour le tableau itératif.SQLSRV_FETCH_BOTH
: pour les deux (déjà par défaut).
Références Modifier
- ↑ http://www.microsoft.com/en-us/download/details.aspx?id=20098
- ↑ http://www.php.net/manual/fr/ref.pdo-sqlsrv.php
- ↑ https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
- ↑ https://www.barryodonovan.com/2016/10/31/linux-ubuntu-16-04-php-and-ms-sql
- ↑ http://msdn.microsoft.com/fr-fr/library/cc296152%28v=sql.90%29.aspx
- ↑ http://php.net/manual/fr/function.mssql-connect.php
- ↑ http://www.php.net/manual/fr/function.mssql-select-db.php
- ↑ http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html
- ↑ http://php.net/manual/fr/function.sqlsrv-fetch-array.php