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


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.

La tua email sarà utilizzata per comunicarti se qualcuno risponde al tuo commento e non sarà pubblicato. Dichiari di avere preso visione e di accettare quanto previsto dalla informativa privacy

  • Anonimo scrive:
    funzionalità macchine MACINTOSH
    Possessore di macchina IMAC I^ generazione ( 233 MHZ ), devo purtroppo dire che la tanto conclamata potenza e funzionalità delle macchine APPLE non l'ho vista.In particolare ho trovato quanto segue:- la stabilità del sistema operativo MACOS é risultata scarsa, anche dopo vari aggiornamenti dalla versione 8.5 alla 9.0.Ogni tanto capita che la macchina si blocchi e non rimanga altro da fare che resettare, ripartendo da zero.- tutte le applicazioni finora provate: " MADE4MAC" , hanno problemi anche seri di funzionamento: ricordo ad esempio che per far funzionare OFFICE 98, ho dovuto scaricare particolari file di aggiornamento da internet e nonostante ciò la funzionalità é rimasta scarsa ( ogni tanto si blocca!!! il maledetto!!! e per fare calcoli un pò complicati meglio utilizzare il pallottoliere perché si fa prima!!).- per riuscire a stampare con EPSON 740, poi, é stato quasi come andare su MARTE, nonostante files particolari fornitomi dall'assistenza Apple!!!Concludendo, spero solo che le nuove versioni delle macchine APPLE possano raggiungere risultati migliori di quelli che ho notato dalla mia "bellissima" macchina.Intanto avendo necessità di macchine più potenti per OFFICE AUTOMATION, INTERNET e disegno, ho deciso di passare a PC: lavoro quasi tutto il santo giorno con applicativi dei più disparati su NT, senza riscontrare mai particolari problemi ( per fortuna, altrimenti certe pubblicità di PC gettati dalla finestra potrebbero anche diventare realtà per me!!!! ).Scusatemi dello sfogo, ma non concepisco che un prodotto da sempre reclamizzato per la sua decisa superiorità ( e costo!! ) si domostri tanto poco all'altezza.Vi chiederi solo il favore di darmi una vs opinione in merito, se cioé anche voi avete conoscenza di esperienze negative come la mia!!!!!Almeno mi sentiei meno SOLO, in questo tanto scarso mondo MAC!!Cordiali SalutiP. M.
    • Anonimo scrive:
      Re: funzionalità macchine MACINTOSH
      Sono sorpreso dei tuoi tanti problemi, sinceramente la mia esperienza personale non ha evidenziato quasi nessun problema, tantomeno quelli da te descritti.Capisco quanto fastidio possano dare questi inconvenienti che rendono la macchina di fatto poco utilizzabile.A volte alcuni programmi vanno in conflitto fra loro, ricordo anni fa che tenendo aperti contemporaneamente FormZ, Photoshop ed Xpress andava in bomba, ed era una incomapitibilità tra Xpress e FormZ.Questi problemi per quanto antipatici però esulano dal sistema, quello ha ben poco a che fare.Sulla stampante poi ne ho una uguale, e collegata sia all'iMac 333 (due generazioni dopo il tuo), che ad un iBook non ha dato il minimo problema, non capisco propio.Forse sarai stato particolarmente "sfortunato", forse hai avuto qualche pezzo difettato, non so.Comunque se ti lamenti della scarsa potenza del computer, è difficile rendersene conto con programmi come Office, non sono su quelli che deve dimostare la potenza di calcolo.Ciao Mickey
    • Anonimo scrive:
      Re: funzionalità macchine MACINTOSH

      Possessore di macchina IMAC I^ generazione (
      233 MHZ ), devo purtroppo dire che la tanto
      conclamata potenza e funzionalità delle
      macchine APPLE non l'ho vista.Possessore di vari Mac (dall'LC al G4), e di vari PC (dal 286 al PIII) coi quali fare i paragoni.
      In particolare ho trovato quanto segue:
      - la stabilità del sistema operativo MACOS é
      risultata scarsa, anche dopo vari
      aggiornamenti dalla versione 8.5 alla 9.0.Gli aggiornamenti sono 8.6 e 9.0.4 o 9.1
      Ogni tanto capita che la macchina si blocchi
      e non rimanga altro da fare che resettare,
      ripartendo da zero.Capita a tutti... ma se fai gli aggiornamenti giusti (quelli che ti ho detto sopra) ti accorgerai che capita moooloto meno che su WinDOS
      - tutte le applicazioni finora provate:
      " MADE4MAC" , hanno problemi anche seri di
      funzionamento: ricordo ad esempio che per
      far funzionare OFFICE 98, ho dovuto
      scaricare particolari file di aggiornamento
      da internet e nonostante ciò la funzionalità
      é rimasta scarsa ( ogni tanto si blocca!!!
      il maledetto!!! e per fare calcoli un pò
      complicati meglio utilizzare il
      pallottoliere perché si fa prima!!).Bella scoperta... fincheè usi applicazioni MS...Office 98 non usa le librerie di sistema ma ne installa delle sue, in più, che non fanno altro che appesantire e rendere più instabile il sistema, oltre che non rispettare gli standard Apple. Per esempio se installi un tema diverso dal classico Platinum, in Office98 non lo vedi (segno che non usa le libreria di sistema per la grafica delle finestre o delgi altri elementi). In Office non funzionano le normali combinazioni per inserire i simboli tipo le parentesi quadre (segno anche qui che non si sono usate le librerie standard di sistema). Potrei continuare per pagine e pagine...
      - per riuscire a stampare con EPSON 740,
      poi, é stato quasi come andare su MARTE,
      nonostante files particolari fornitomi
      dall'assistenza Apple!!!???Stessa stampante da due anni: non ho mai avuto un problema, anzi, ci ho stampato due tesi, la mia e quella di mia moglie.Aggiungo che cmq il tuo è un problema dei driver Epson che sostituiscono alcune librerie per gestione della USB (problema risaputo anche sui vari gruppi di discussione)
      Concludendo, spero solo che le nuove
      versioni delle macchine APPLE possano
      raggiungere risultati migliori di quelli che
      ho notato dalla mia "bellissima" macchina.
      Intanto avendo necessità di macchine più
      potenti per OFFICE AUTOMATION, INTERNET e
      disegno, ho deciso di passare a PC: lavoro
      quasi tutto il santo giorno con applicativi
      dei più disparati su NT, senza riscontrare
      mai particolari problemi ( per fortuna,
      altrimenti certe pubblicità di PC gettati
      dalla finestra potrebbero anche diventare
      realtà per me!!!! ).Bello sforzo paragonare una macchina di tre anni fa con una attuale... e con due sistemi dal target differente. Perchè non provi un G4 con MacOSXserver? Scommettiamo che funziona meglio di un PC con NT?
      Scusatemi dello sfogo, ma non concepisco che
      un prodotto da sempre reclamizzato per la
      sua decisa superiorità ( e costo!! ) si
      domostri tanto poco all'altezza.
      Vi chiederi solo il favore di darmi una vs
      opinione in merito, se cioé anche voi avete
      conoscenza di esperienze negative come la
      mia!!!!!Ribadisco: utente di entrambe le macchine da diversi anni e assolutamente convinto della superiorità del Mac
      Almeno mi sentiei meno SOLO, in questo tanto
      scarso mondo MAC!!Se frequentassi i gruppi di discussione scopriresti cose che nemmeno ti immagini...Ciao
    • Anonimo scrive:
      Re: funzionalità macchine MACINTOSH
      - Scritto da: P. Andrea Ing. MANIEZZO
      Possessore di macchina IMAC I^ generazione (
      233 MHZ ), devo purtroppo dire che la tanto
      conclamata potenza e funzionalità delle
      macchine APPLE non l'ho vista.
      In particolare ho trovato quanto segue:
      - la stabilità del sistema operativo MACOS é
      risultata scarsa, anche dopo vari
      aggiornamenti dalla versione 8.5 alla 9.0.
      Ogni tanto capita che la macchina si blocchi
      e non rimanga altro da fare che resettare,
      ripartendo da zero.
      - tutte le applicazioni finora provate:
      " MADE4MAC" , hanno problemi anche seri di
      funzionamento: ricordo ad esempio che per
      far funzionare OFFICE 98, ho dovuto
      scaricare particolari file di aggiornamento
      da internet e nonostante ciò la funzionalità
      é rimasta scarsa ( ogni tanto si blocca!!!
      il maledetto!!! e per fare calcoli un pò
      complicati meglio utilizzare il
      pallottoliere perché si fa prima!!).
      - per riuscire a stampare con EPSON 740,
      poi, é stato quasi come andare su MARTE,
      nonostante files particolari fornitomi
      dall'assistenza Apple!!!

      Concludendo, spero solo che le nuove
      versioni delle macchine APPLE possano
      raggiungere risultati migliori di quelli che
      ho notato dalla mia "bellissima" macchina.
      Intanto avendo necessità di macchine più
      potenti per OFFICE AUTOMATION, INTERNET e
      disegno, ho deciso di passare a PC: lavoro
      quasi tutto il santo giorno con applicativi
      dei più disparati su NT, senza riscontrare
      mai particolari problemi ( per fortuna,
      altrimenti certe pubblicità di PC gettati
      dalla finestra potrebbero anche diventare
      realtà per me!!!! ).

      Scusatemi dello sfogo, ma non concepisco che
      un prodotto da sempre reclamizzato per la
      sua decisa superiorità ( e costo!! ) si
      domostri tanto poco all'altezza.
      Vi chiederi solo il favore di darmi una vs
      opinione in merito, se cioé anche voi avete
      conoscenza di esperienze negative come la
      mia!!!!!
      Almeno mi sentiei meno SOLO, in questo tanto
      scarso mondo MAC!!

      Cordiali Saluti

      P. M.posseggo un g4 da giugno 2000i vecchi programmi non funzionavanoho dovuto patcharli tutti (1 mese)portare la ram a 512 mega!!!!per farlo funzionare decentementeil tanto decantato MAC OS Xe una bufala linux ppc è ugualema gratis
Chiudi i commenti