Accedere a Microsoft SQL Server via PHP

In un recente lavoro mi è capitato di dover accedere ad un database Microsoft SQL Server da un software scritto in PHP. Il software girava sulla stessa macchina di SQLServer, quindi in ambiente Windows.

Vi sono diverse librerie disponibili per effettuare questa operazione; io ho scelto quelle proprietarie di Microsoft, che troverete qui:

http://sqlsrvphp.codeplex.com/

 

INSTALLAZIONE DRIVER PHP-SQLSERVER

Vediamo intanto come installare i componenti necessari. 

Installate "Microsoft® SQL Server® 2012 Native Client", prendendolo da questo indirizzo:

http://www.microsoft.com/it-it/download/details.aspx?id=29065

Scaricate l'ultima versione del driver ufficiale per Php che trovare qui:

http://www.microsoft.com/en-us/downlo ad/details.aspx?id=20098

una volta estratti i files copiate php_sqlsrv_54_ts.dll ed php_pdo_sqlsrv_54_ts.dll nella directory "ext" della vostra installazione Php, ed aggiungete le seguenti direttive al file php.ini:

 

extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll

 

(attenzione: se avete installato la versione "non thread safe" di php, dovrete invece usare le DLL con nome *_nts.dll)

 

ESEGUIAMO LE NOSTRE QUERY

Adesso che abbiamo installato tutto il necessario siamo pronti; 

--- inizio file test.php ---
<?php
// questa istruzione non e' indispensabile... 
// ...ma evito che spuntino un sacco di warning
// se faccio query su tabelle con colonne DATE/TIME

date_default_timezone_set('Europe/Rome');

// parametri di connessione

$serverName = "localhost";
$connectionInfo = array(
     "Database"=>"ilNomeDelDatabase", 
     "UID"=>"ilMioUtente", 
     "PWD"=>"laMiaPassword"
    );

// connessione al database
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// esecuzione della query
$sql = "SELECT * FROM tnomeTabella";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// stampa dei risultati
while($obj = sqlsrv_fetch_object( $stmt)) {
      echo $obj->nomeColonna."\n";
}

// chiudo la connessione al db
sqlsrv_close($conn);
?>

 

--- fine file test.php ---

per eseguire lo script basta eseguire "php test.php" e vedere l'output (ovviamente dovrete cambiare i parametri di connessione ed il nome della tabella e della colonna da visualizzare se volete che funzioni :-D )

Troverete la descrizione delle API sul sito ufficiale del progetto, oppure andando all'URL:

http://www.php.net/manual/en/book.sqlsrv.php

 
NOTE
Per completezza, l'ambiente su cui ho fatto queste prove è Windows7+SQLServer 2008+PHP 5.4 (thread safe)