50. I Database

In questo capitolo vedremo le funzioni che PHP 5 ci mette a disposizione per gestire il proprio database MySQL.

Non è scopo di questa lezione spiegarvi cosa è un Database e come funziona, pertanto vi consiglio di apprendere queste informazioni prima di procedere con la lettura di questo capitolo.

Per iniziare vi consiglio due ottimi documenti in italiano su Wikipedia :

Prima di iniziare ad analizzare le funzioni base di PHP vi consiglio di procurarvi phpMyAdmin (chi ha installato AppServ lo ha già incluso nel pacchetto) e di installarlo nel vostro server, poichè vi permetterà di gestire il vostro database in modo molto intuitivo e veloce.

Al riguardo una serie di articoli utili e interessanti :

  • phpMyAdmin - Sito ufficiale con documentazione e download ultima versione
  • Wikipedia - Articolo in italiano su phpMyAdmin con link a risorse utili
  • Guida HTML.it - Guida all'utilizzo di questo tool (in lingua italiana)

Funzioni

  • mysql_connect() - Apre una connessione con il server MySQL specificato.
  • mysql_close() - Chiude la connessione con il server MySQL.
  • mysql_pconnect() - Apre una connessione persistente con il server MySQL specificato, non necessita di un'antagonista "mysql_pclose()" per la chiusura della connessione.
  • mysql_select_db() - Seleziona il database MySQL specificato.
  • mysql_query() - Esegue una query MySQL.
  • mysql_num_rows() - Restituisce il numero di righe prodotto da una query.
  • mysql_fetch_array() - Trasforma una riga del risultato di una query in un array.
  • mysql_fetch_assoc() - Trasforma una riga del risultato di una query in un array associativo.

Per un elenco completo e dettagliato vi rimando alla documentazione ufficiale.

Vediamo ora un esempio di utilizzo con le funzione sopracitate, prendendo in esame una tabella "impiegati" con 4 campi di cui riporto sotto il codice MySQL per la creazione (potete incollarlo direttamente nel campo SQL di phpMyAdmin) :

CREATE TABLE `impiegati` (
	`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
	`nome` VARCHAR( 200 ) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL ,
	`cognome` VARCHAR( 200 ) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL ,
	`stipendio` BIGINT UNSIGNED NOT NULL DEFAULT '0'
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_ci;

Inserendo quattro record nella tabella ottengo questo risultato.

Vediamo ora il codice PHP per leggere la tabella dal database MySQL e stamparla nella pagina sotto forma di tabella HTML :

<?php

	$connessione = mysql_connect("localhost", "admin", "password");
	mysql_select_db("nome_database", $connessione);

	// Leggiamo l'intera lista di impiegati in ordine crescente per il campo "id"
	$query = "SELECT * FROM impiegati ORDER BY id ASC";
	$risultato = mysql_query($query);

	$righe = mysql_num_rows($risultato);

	echo "La query ha prodotto $righe righe.\n<br /><br />";
	echo "<table border=\"1\" cellspacing=\"5\">";
	echo "<tr><td>ID</td><td>NOME</td><td>COGNOME</td><td>STIPENDIO</td></tr>";

	while ($riga = mysql_fetch_array($risultato, MYSQL_ASSOC))
	{
		echo "<tr><td>" . $riga["id"] . "</td>";
		echo "<td>" . $riga["nome"] . "</td>";
		echo "<td>" . $riga["cognome"] . "</td>";
		echo "<td>" . $riga["stipendio"] . "</td></tr>";
	}

	echo "</table>";

	mysql_close();

?>

Una volta connessi al server MySQL e selezionato il database corretto, è sufficiente eseguire una query SQL tramite la funzione mysql_query(). Quest'ultima restituirà una risorsa che leggeremo attraverso la funzione mysql_fetch_array().

mysql_fetch_array() estrae una riga dal risultato e lo trasforma in un array associativo (MYSQL_ASSOC) incrementando poi il contatore per puntare alla riga successiva alla prossima chiamata. E' infatti sufficiente richiamare nuovamente la funzione per ottenere l'array associativo della riga successiva.

Per accedere poi ai valori basta usare il nome del campo come chiave di accesso dell'array.

Il risultato ottenuto.