Utilizzo di Mysql
In quest'articolo vedremo come interagire con il database Mysql. Supponiamo di aver creato un database di nome "db_esempio" e una tabella di nome "tab_esempio" in cui vogliamo memorizzare dei dati riguardanti alcune città italiane. I campi della tabella saranno quindi città,regione,numero abitanti.
Per non lavorare con numeri molto grandi in questo esempio userò, riguardo il campo numero abitanti, valori non reali. Andremo a vedere le operazioni di inserimento dati,cancellazione dati e aggiornamento dati, ossia le operazioni più frequenti con un database.
INSERIMENTO DATI
Voglio inserire nella tabella tab_esempio i seguenti dati inerenti la città di Milano. Creiamo una pagina di nome inserisci.php:
città: città1, regione: regione1, abitanti: 100
Prima di poter inserire i dati nella tabella del database devo connettermi al database:
$myconn=mysql_connect($host,$user,$password) or die("Errore di connessione");
$db_name="db_esempio";
mysql_select_db($db_name,$myconn);
mysql_connect serve a connettersi al database e prende come argomenti $host,$user e $password che sono le variabili dove precedentemente avrete memorizzato i valori di connessione al database Mysql e associamo quest'istruzione a $myconn, che quindi è il nome della connessione. mysql_select_db seleziona invece il database con il quale volete operare e prende come argomenti il nome del database e il nome della connessione. Ora andremo ad inserire i dati nella tabella:
$query_sql="INSERT INTO tab_esempio VALUES('città1','regione1','100');";
$result=mysql_query($query_sql,$myconn);
Nella variabile $query_sql è stata memorizzata la query sql che inserisce i dati nel database mentre l'istruzione mysql_query esegue la query, infatti come primo argomento prende la query sql e come secondo argomento il nome della connessione al database . L'inserimento dei dati nel database è stato effettuato.
LETTURA DATI
Ora supponiamo di voler leggere tutti i dati precedentemente memorizzati nel database. Costruiamo una pagina di nome leggi.php con il seguente codice:
$myconn=mysql_connect($host,$user,$password) or die("Errore di connessione");
$db_name="db_esempio";
mysql_select_db($db_name,$myconn);
$query_leggi="SELECT * FROM tab_esempio";
$result=mysql_query($query_leggi,$myconn);
$numero_righe=mysql_num_rows($result);
for ($i=0;$i<$numero_righe;$i++)
{
$array_result=mysql_fetch_row($result);
$citta=$array_result[0];
$regione=$array_result[1];
$abitanti=$array_result[2];
echo $citta."|".$regione."|".$abitanti."<br>";
}
Andiamo a commentare il codice. Come in precedenza mi connetto al database contenente i dati poi alla variabile $query_leggi assegno una query sql che mi permette di selezionare tutti i record nel database. I risultati della query li memorizzo nella variabile $result. Successivamente tramite l'istruzione mysql_num_rows si va a trovare quanti record sono stati trovati e il numero viene memorizzato nella variabile $numero_righe. A questo punto si va a fare un ciclo for che va ad analizzare ogni record trovato e i singoli campi di ogni record (città, regione e abitanti) vengono memorizzati nell'array $array_result. Dal momento che i campi sono tre andiamo a memorizzare ogni singola informazione contenuta nell'array $array_result nelle variabili $citta, $regione e $abitanti e visualizziamo i dati su schermo tramite l'istruzione echo.
Quindi con i file inserisci.php e leggi.php siamo in grado di inserire e leggere i dati contenuti nel database. Ora andiamo a vedere come avviene la cancellazione di un record.
CANCELLAZIONE RECORD
Supponiamo di avere memorizzato nel database una gran quantità di città con relativa regione e numero di abitanti. Si vuole cancellare il record relativo alla città di nome Città1. Si va a scrivere il seguente codice:
$myconn=mysql_connect($host,$user,$password) or die("Errore di connessione");
$db_name="db_esempio";
mysql_select_db($db_name,$myconn);
$query_canc="DELETE * FROM tab_esempio WHERE città='città1'";
$result=mysql_query($query_canc,$myconn);
L'unica cosa da commentare è la query che questa volta seleziona il record in cui il campo città contiene città1. Si sarebbe potuto selezionare il record anche per regione o per numero di abitanti, basta cambiare la relativa query come fatto per il campo città.


Client does not support authentication protocol error
MySQL 4.1 uses an authentication protocal based on a password hashing algorithm that is incompatible with that used by older clients. If you upgrade the server to 4.1, attempts to connect to a it with an older client may fail with the following message:
shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client
To solve this problem you should do one of the following:

For background on password hashing and authentication, see section 4.3.11 Password Hashing in MySQL 4.1.