Corso PHP/ Lezione 11: PHP e il database MySQL

Corso PHP/ Lezione 11: PHP e il database MySQL

In questa lezione vedremo come interfacciarsi ad un database MySQL e fare le nostre prime interrogazioni SQL attraverso PHP
In questa lezione vedremo come interfacciarsi ad un database MySQL e fare le nostre prime interrogazioni SQL attraverso PHP


La coppia PHP e MySQL è sicuramente una delle più diffuse nella
realizzazione di applicazioni web basate su software OpenSource. MySQL è un
DBMS, Data Base Management System, cioè un software per la gestione di basi di
dati; la sua popolarità è indiscussa, grazie alle prestazioni di tutto
rispetto e nonostante la mancanza di diverse caratteristiche avanzate
(transazioni, stored procedures, etc.).

Nel seguito vedremo in che modo è possibile, da uno script PHP, collegarsi
ad un database MySQL ed eseguire operazioni su di esso tramite il linguaggio SQL.
Per una completa comprensione della lezione è necessaria una conoscenza di base
di SQL; assumeremo, inoltre, che MySQL sia correttamente installato.

L’accesso ad un database MySQL avviene mediante autenticazione; questo vuol
dire che, prima di poter effettuare qualsiasi operazione su di esso, dobbiamo
disporre dei privilegi necessari. In particolare, le informazioni di cui abbiamo
bisogno sono: il nome dell’host su cui è in esecuzione il server MySQL, il nome
del nostro database, il nome utente che ci è stato assegnato e la relativa
password (per averle occorre rivolgersi all’amministratore di sistema).
Supponiamo che i parametri nel nostro caso siano i seguenti:

// Il nome dell'host (hostname) su cui si trova
MySQL

$dbhost = "localhost";

// Il nome del nostro database

$dbname = "dbprova";

// Il nostro nome utente (username)

$dbuser = "luca";

// La nostra password

$dbpass = "secret";

E’ opportuno salvare tali parametri in apposite variabili piuttosto che
utilizzarli direttamente nelle chiamate di funzione; in tal modo, infatti,
potremo inserirli in un file separato che includeremo in tutti gli script che
accedono al database.

La prima funzione che utilizziamo è mysql_connect() , che ci servirà
per instaurare la connessione con il server MySQL. I parametri da fornire a tale
funzione sono il nome dell’host, il nome utente e la password. Vediamo un
esempio:

// Funzione mysql_connect()

$conn = mysql_connect($dbhost,$dbuser,$dbpass)

or die("Impossibile collegarsi al server MySQL.");

Si osservi la sintassi utilizzata nell’esempio precedente; il significato è il
seguente: se la funzione restituisce un valore nullo, situazione che denota
l’impossibilità a collegarsi al server MySQL, viene invocata die() per
arrestare l’esecuzione e visualizzare un messaggio di errore. Inoltre, in una
variabile che abbiamo chiamato $conn salviamo il valore restituito da mysql_connect() ,
che servirà da identificativo della connessione stabilita.


Il passo successivo è la selezione del database su cui operare; la funzione
da utilizzare è mysql_select_db() , alla quale occorre fornire il nome
del database e, opzionalmente, l’identificativo della connessione (se non viene
indicata verrà utilizzata l’ultima aperta).

// Funzione mysql_select_db()

mysql_select_db($dbname,$conn)

or die("Impossibile selezionare il database $dbname");

Anche questa volta in caso di insuccesso viene arrestata l’esecuzione del
programma PHP e viene visualizzato un messaggio di errore appropriato.

Arriviamo così alla parte più importante, quella dell’interazione con la
base di dati, interazione che avverrà mediante il linguaggio SQL. Le funzioni
PHP che utilizzeremo in questa fase sono mysql_query() , per l’esecuzione
di comandi SQL, e mysql_fetch_row() , per prelevare il risultato
restituito da MySQL quando il comando eseguito è un’istruzione SELECT
(quindi un’interrogazione, o query).

Supponiamo di voler creare una tabella del database con cui gestire una
rudimentale rubrica telefonica. Il comando SQL da utilizzare sarà del tipo

CREATE TABLE rubrica(

Progressivo int PRIMARY KEY AUTO_INCREMENT,

Nome varchar(40),

Cognome varchar(40),

Telefono varchar(20))

Per eseguire tale comando dal nostro script PHP, lo inseriamo dapprima in una
stringa, ad esempio nel modo seguente

$sql = "CREATE TABLE rubrica( "

. "Progressivo int PRIMARY KEY AUTO_INCREMENT, "

. " Nome varchar(40), Cognome varchar(40), Telefono varchar(20))";

Passiamo poi all’esecuzione vera e propria, invocando la funzione mysql_query().

// Esegue il comando SQL o stampa un messaggio di
errore

$res = mysql_query($sql,$conn)

or die( "Errore: " . mysql_error() );

Voilà, il gioco è fatto! In caso di errori, comunque, l’istruzione mysql_error()
ci fornisce la descrizione del problema che si è verificato.

Esaminiamo adesso il caso di una interrogazione del database. L’esecuzione del
relativo comando SQL (sarà, naturalmente, una SELECT ) è del tutto
analoga al caso già visto. L’unica differenza risiede nel fatto che, in questo
caso, abbiamo un risultato da prelevare. Una delle funzioni che possiamo
utilizzare a tale scopo è mysql_fetch_row() .

// Interroghiamo la nostra rubrica

// Comando SQL da eseguire

$sql = "SELECT Telefono FROM rubrica "

. "WHERE Nome='Luca' AND Cognome='Balzerani'";

// Esecuzione comando SQL o messaggio di errore

$res = mysql_query($sql,$conn)

or die( "Errore: " . mysql_error() );

// Estrazione del risultato

$info = mysql_fetch_row($res);

echo "Il mio numero di telefono è " . $info[0];

Al termine della sessione di lavoro si può invocare la funzione mysql_close()
per chiudere la connessione con il server MySQL. Si tratta, in ogni caso, di un
passo opzionale in quanto tutte le connessioni lasciate aperte verranno chiuse
automaticamente alla fine dello script.

// Funzione mysql_close()

mysql_close($conn);

Si conclude qui questa lezione dedicata a PHP e MySQL. Nella prossima, che sarà
anche l’ultima del corso, ci occuperemo delle sessioni.

Luca Balzerani , studente di
Informatica, è fondatore e presidente di LatoServer.it ,
sito dedicato alla programmazione server-side ed al backend in generale.

Link copiato negli appunti

Ti potrebbe interessare

Pubblicato il 21 gen 2001
Link copiato negli appunti