Contenu
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.
vous devez aussi être à l’aise avec le langage SQL, vous pouvez suivre un cours SQL sur Internet
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
Cliquez sur « source de données odbc 64 bits »
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);