Link sponsorizzati

Lavorare con MySql

In questa lezione conclusiva vedremo insieme come è possibile far interagire le nostre pagine .php con i database MySql.
Per dovere di completezza non possiamo non ricordare che PHP è in grado di connettersi a diversi database server (MySql, MS Access, PostgreSql, Oracle, Microsoft Sql Server, Sybase,...) tuttavia noi ci limiteremo a vedere l'interazione con MySql che è senza dubbio la soluzione più comune e diffusa.

MySql è un database veloce e potentissimo in grado di gestire applicazioni con un elvato grado di criticità e, cosa non secondaria, è un software open source, liberamente scaricabile dal sito www.mysql.com.

(L'articolo continua più sotto...)

Come abbiamo accennato nella lezione precedente PHP mette a disposizione dello sviluppatore diverse funzioni per interagire con i db MySql. Vediamo insieme le più importanti.

Per prima cosa vediamo come fa PHP a connetersi al MySql Server.
Allo scopo soccorre la funzione mysql_connect() che si utilizza con la seguente sintassi:

mysql_connect(server, utente, password);
Ad esempio:
$myconn = mysql_connect('localhost', 'pippo', 'xxxxxx') or die('Errore...');
Una volta stabilita la connessione è necessario selezionare uno specifico db sul quale lavorare. A questo scopo PHP ci fornisce la funzione mysql_select_db() da utilizzarsi con la seguente sintasi:
mysql_select_db(database, connessione);
Ad esempio:
mysql_select_db('mio_database', $myconn) or die('Errore...');
Per prima cosa vediamo come è possibile recuperare dei dati presenti nel nostro database.
Per fare questo dobbiamo formulare ed eseguire una query, la quale consiste in una interrogazione che lo sviluppatore rivolge al database. Per fare ciò si fa ricorso alla funzione mysql_query() con la seguente sintassi:
mysql_query(query, connessione);
Ad esempio:
$query = "SELECT * FROM tabella";
$result = mysql_query($query, $myconn) or die('Errore...');
Facciamo ora un esempio completo.
Poniamo di voler recuperare dalla tabella "amici" una serie di dati (nome, cognome e telefono) e di volerli stampare a video per ogni occorrenza trovata nel nostro database.
Ecco il codice completo opportunamente commentato:
<?php
//Mi connetto al MySql Server
$myconn = mysql_connect('localhost', 'pippo', 'xxxxxx') or die('Errore...');

//Mi connetto al database degli amici
mysql_select_db('database_degli_amici', $myconn) or die('Errore...');

//Imposto ed eseguo la query
$query = "SELECT nome, cognome, telefono FROM amici";
$result = mysql_query($query, $myconn) or die('Errore...');

//conto il numero di occorrenze trovate nel db
$numrows = mysql_num_rows($result);

//se il database è vuoto lo stampo a video
if ($numrows==0){
  echo "Database vuoto!";
}
//Se invece trovo delle occorrenze...
else
{
  //Avvio un ciclo for che si ripete per il numero di occorrenze trovate
  for($x=0; $x<$numrows; $x++){
    //Recupero il contenuto di ogni record rovato
    $resrow = mysql_fetch_row($result);
    $nome = $resrow[0];
    $cofgnome = $resrow[1];
    $telefono = $resrow[2];

    //Stampo il risultato
    echo "nome: <b>" . $nome . "</b><br/>";
    echo "cognome: <b>" . $cognome . "</b><br/>";
    echo "telefono: <b>" . $telefono . "</b>";
  }
}
?>
Quello che abbiamo fatto qui sopra dovrebbe eservi abbastanza chiaro (ricordate la lezione sui cicli?)...
Resta pertanto da chiarire solo il significato di due funzioni specifiche che abbiamo utilizzato:
  • mysql_num_rows()
    Serve per conteggiare il numero di records trovati all'interno del nostro db sulla base di una data query;
  • mysql_fetch_row()
    Recupera il contenuto dei records trovati. Più precisamente restituisce una array contenente i valori di ogni campo riscontrato nel recordset.
Cenni di SQL: INSERT INTO, UPDATE e DELETE
Per finire vediamo brevemente come eseguire altre importanti operazioni con i database attraverso i più comuni comandi del linguaggio SQL.

Con INSERT INTO si inseriscono nuovi dati nel db, con UPDATE si aggiornano dei dati già presenti, con DELETE si cancellano dei dati.

Dal punto di vista di PHP queste operazioni non differiscono tra loro, l'unica cosa che cambia è la query che viene eseguita, ma questo discorso attine al linguaggio SQL.
Facciamo degli esempi:

Per INSERT INTO useremo:

$query = "INSERT INTO tabella VALUES('valore1','valore2','valore3')";
Per UPDATE useremo:
$query = "UPDATE tabella SET campo1='valore1', campo2='valore2', campo3='valore3' WHERE id = 1";
Per DELETE useremo:
$query = "DELETE FROM tabella WHERE id = 1";
Attenzione!
Se nelle query di UPDATE e DELETE non usiamo la clausola "WHERE" verranno aggiornati/eliminati tutti i record del db!

Facciamo un esempio di utilizzo di queste query; vediamo come cancellare con PHP un record dal nostro database MySQL:

<?php
//Mi connetto al MySql Server
$myconn = mysql_connect('localhost', 'pippo', 'xxxxxx') or die('Errore...');

//Mi connetto al database degli amici
mysql_select_db('database', $myconn) or die('Errore...');

//Imposto ed eseguo la query
$query = "DELETE FROM tabella WHERE id = 1";
$result = mysql_query($query, $myconn) or die('Errore...');
?>
Per le altre operazioni basterà sostituire la query mantenendo inalterata la struttura del PHP.

Guida PHP
E-Learning
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 49 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 39 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Link sponsorizzati