Come connettersi al database con PHP

In questo tutorial vedremo come abilitare i moduli MS SQLServer nell' installazione del PHP, riuscendo cosìa creare pagine in PHP che si connettano ed interagiscano conil server di casa Microsoft.

Cosa ci serve

Dobbiamo abilitare i moduli sybase o mssql nel nostro PHP.Alcune distribuzioni BSD permettono all' utente discegliere quali moduli installare, mentre in altri casiè l' utente che deve farlo manualmente; se citroviamo nel secondo caso, non disperiamoci, èpiuttosto semplice: innanzitutto ci serve la libreria freetds,che rende possibile l' accesso ai databases Sybase e SQLServer.Per installarla, tutto come di consueto: avviare gliscripts configure, make ed infine makeinstall.

Next you need to build your PHP installation so that it knowsabout freetds. That's as simple as adding --with-mssql tothe configure switches in most places. Freetds installs bydefault in /usr/local, so you'll probably need to modifythe switch slightly to read --with-mssql=/usr/local

A questo punto copiamo i nostri binari ed attiviamoli nelphp.ini. Da tener presente che tal file contiene giàl' opzione di attivazione mssql, basterà togliervila definizione commento. Riavviamo il webserver. A questopunto, per accertarci di aver svolto tutto correttamente,lanciamo il comando php_info(), che ci mostrerà lalista di tutti i moduli installati. Deve esserci il modulomssql.

Pacchetti opzionali:

Molto utile, ma non indispensabile, è il pacchetto PEAR DB, consigliato aiprogrammatori che aspirano ad una cross-platform. La sipuò installare in una cartella del server apiacimento, accertandosi che sia inclusa nel PHP Includepath.

A cosa serve il PEAR DB? Permette l' utilizzo didifferenti motori database senza bisogno di cambiare ilcodice in PHP. Come prima cosa, nel caso si stia lavorando susistema UNIX o su sistema Windows con attivo il moduloSybase, bisogna specificargli la porta del database (didefault per l' MS SQL è la 1433); nel caso in cuisia invece attivato il modulo mssql questo non ènecessario.

Da tener presente, inoltre, l' indubbia utilitàdelle stored procedures, richiamabili tramite la sintassi:

"EXECUTE nome_procedura @variabile1 = 'value1', @variabile2 = 'value2'"

Vediamo a questo punto un piccolo esempio che integra il PEARDB e l' SQL Server in PHP:

 

    <?php    require_once("DB.php");    $db =& DB::connect("mssql://user:password@host:1433/membership");    if (DB::isError($db)) {die($db->getMessage());    }    $db->setFetchMode(DB_FETCHMODE_ASSOC);    $res = db->query("EXECUTE member_list");    if (DB::isError($res)) {die($res->getMessage());    }    echo "<table>n<tr>n<th>Name</th><th>Address</th><th>Email</th>" . "<th>Expiration</th>n</tr>n";    while($row =& $res->fetchRow()) {printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>n" , $row["name"], $row["address"], $row["email"], $row["expiration"]);    }    echo "</table>n";    ?>

 

Comepossiamo vedere, non c'è nulla di complicatone' nulla di così tanto diverso dal codice usatoper connettersi ad databases MySQL. La connessione vienestabilita mediante il metodo DB::connect. Il metodosetFetchMode() lo abbiamo utilizzato invece per dire all'applicazione in quale formato restituirci i risultati deldatabase. Il metodo query() invece ci permette l'esecuzione di una query e l' archiviazione dei suoirisultati in una variabile. Molto utile inoltre il metodogetMessage()che contiene la descrizione dei possibili erroriche si possono verificare durante l' esecuzione.

Perchèservirsi dell' SQL Server

Moltipuristi potrebbero malvedere l' unione di PHP ed SQLServer trattata in questo tutorial. Lasciando peròalle spalle tutta l' etica e le convenzioni, l'utilità è indubbia, per diversi motivi.Innanzitutto, è indubbia la qualità delprodotto, l' SQL Server, potente ma nello stesso tempouser-friendly. Fattore importante è pure la suaonnipresenza nel mondo delle aziende, dove i serversproprietari (come l' SQL Server) fanno da padroni suquelli opensources. Per questi motivi è importantepadroneggiare l' SQL Server, ancora meglio poi se lo sisa integrare nel PHP, linguaggio universalmente riconosciutocome tra i più rapidi del settore.