Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save brahimmachkouri/d40d7b8b65c93e466544d198bcd6bb98 to your computer and use it in GitHub Desktop.
Save brahimmachkouri/d40d7b8b65c93e466544d198bcd6bb98 to your computer and use it in GitHub Desktop.
Connexion à MS SQL Server en PHP sous Debian/Ubuntu
layout date title category tags
post
2024-08-22 04:40:00 -0700
Connexion à MS SQL Server en PHP sous Debian/Ubuntu
dev
mssql php ubuntu

Remarque : la procédure suivante a été réalisée pour une version 7.2 de PHP. Il se peut que vous deviez adapter quelques points...

Pour la suite, on suppose que le serveur Microsoft SQL Server écoute les requêtes sur le port 1433 (par défaut) et qu’un utilisateur admindb est configuré pour l’accès à la base tournois qui ne contient ici qu’une seule table :

+------------+
|   users    |
+------------+
|    id      |
|    nom     |
+------------+

Paramètres :

IP SQL Server : 10.0.0.15
Database : tournois
Username : admindb
Password : HercuLE

Pour installer le client SQL Server sous Debian ou Ubuntu :

apt install freetds-common freetds-bin unixodbc tdsodbc php7.2-odbc

Redémarrer le démon PHP, puis remplir les fichiers de configuration :

Dans /etc/freetds/freetds.conf, ajouter :

[monserveur]
host = 10.0.0.15
port = 1433
tds version = 8.0

Dans /etc/odbcinst.ini, ajouter :

[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Dontdlclose = 1

Dans /etc/odbc.ini, ajouter :

[MSSQLSRV]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
#Server = 10.0.0.15
Servername = monserveur
Database = tournois
Port = 1433

Tester la connexion au serveur SQL Server à l’aide des outils tsql & isql :

tsql -H 10.0.0.15 -p 1433 -U admindb -P HercuLE -D tournois

Si tout va bien, voici le résultat :

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Setting tournois as default database in login packet
1>

Taper quit pour sortir.

Ensuite :

isql -v MSSQLSRV admindb HercuLE

donnera :

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Voici le code pour faire une requête en PHP :

<?php
 
define('USER','admindb');
define('PASSWORD','HercuLE');
 
$conn   = odbc_connect("MSSQLSRV", USER, PASSWORD);
$query  = "select * from CT_USER";
$result = odbc_exec( $conn, $query );
 
while (odbc_fetch_row($result)) {
  echo odbc_result($result, "name"), "\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment