Requêter la base Sql Server en php via Odbc

Temps de lecture: 2 minutes

PHP requêter sur une base Sql Server

On a l’habitude de requêter une base MySql en PHP, mais sur une base Sql Server c’est moins facile à mettre en oeuvre. Microsoft n’a pas développé de driver pour la version 64 bit de WAMP, il a fallu se rabattre sur le driver Odbc.

Requêter vec ODBC n’est pas très difficile, mais plutôt rustique, ce dernier ne bénéficiant sans doute pas de toutes les optimisations (je pense), donc sur de faibles volumétries, ça le faire. J’ai dû le faire pour un récent projet où je devais attaquer la base SQL Server.

Pré requis

Placez un fichier phpinfo(), et regardez si le driver ODBC est installé, si non allez dans le fichier php.ini et vérifiez que la ligne est présente.

Le driver ODBC lui-même

Su Windows vérifiez que le driver ODBC est installé avec la manipulation suivante :

Dans la boite d’entrée Cortana tapez : odbc

php odbc windows

 

Cliquez sur « source de données odbc 64 bits »

odbc php

Ici on a la version 13 du driver.

Connexion à la source de données

La grosse différence est la façon de se connecter à la base de données

$data_source='Driver={ODBC Driver 13 for SQL Server};Server=SERV\SAGESQL;Database=MA_BASE';
$user = 'login';
$password = 'motdepasse';

Voici un exemple complet d’une requête :

$conn=odbc_connect($data_source,$user,$password);
if (!$conn){
      exit("Connection Failed:" . odbc_errormsg() );
    }

$sql = 'SELECT * FROM MA_TABLE';
//query
$result = odbc_exec($conn,$sql);
echo odbc_num_rows($result)." results<br>";
//read
$s = odbc_fetch_row($result,0);

echo odbc_result($result,"Siret");

Odbc_exec, odbc_result

odbc_exec exécute la requête, tandis que odbc_result lit un enregistrement. On lui passe deux arguments le premier est la ressource odbc, le second est le nom du champ, ou le numéro de colonne du champ

Parcourir les résultats

//Connaitre le nombre de résultats retournés:

echo odbc_num_rows($result);

Afficher un résultat

Pour une requête retournant un seul résultat, pas d’ambiguité, odbc_result($result, »Siret ») ou odbc_result($result,3) si la colonne Siret est en 4èmeposition.

Chercher une ligne de résultat spécifique:

$s = odbc_fetch_row($result,3);// on cherche la 3ème ligne

echo odbc_result($result,"SIRET");

Afficher une liste de résultats

Dans ce cas la meilleure façon est de faire une boucle while

while($row = odbc_fetch_array($result)){
  echo $row['CT_NUM'] . '-' .$row['SIRET'].'<br>';
}

odbc_free_result($result);

 

 

 

 

Vous aimerez aussi...