MYSQL E PHP Per poter interagire con un database in rete mediante uno script php bisogna innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MySQL_connect(nome del host, nome utente, password). Esempio or die( Connessione al server MySQL non riuscita ); Si noti come la funzione restituisca un valore che assegniamo alla variabile $conn la quale diventa una sorta di puntatore alla connessione. Questa variabile può essere utilizzata per individuare una fra più connessioni aperte. Si noti come viene utilizzata come parametro della funzione MySQL_close che rilascia la connessione. Una versione alternativa dello script che non utilizza il costrutto die è la seguente if(!$conn) exit( Connessione al server MySQL non riuscita ); Una volta che si è stabilita la connessione al server MySQL occorre selezionare il database che interessa mediante la funzione MySQL_select_db(nome del database)
MySQL_select_db($nomedb) Per poter interagire con MySQL si devono creare all interno dello script delle stringhe contenenti i comandi SQL che vogliamo far eseguire al server e passarle come parametro alla funzione MySQL_query(comando) Nel seguente esempio creiamo una tabella nel database di interesse MySQL_select-db($nomedb) $comando= Create Table Libro (IDLibro Varchar(10) PRIMARYKEY, Titolo Varchar(40), Editore Varchar(30), Autore Varchar(30)) ; MySQL_query($comando) or die( Comando non riuscito )
Possiamo creare una versione alternativa dello script che utilizza la funzione MySQL_errno(): tale funzione restituisce 0 se il comando precedente ha avuto buon fine altrimenti restituisce un intero che identifica il tipo di errore avvenuto. La funzione MySQL-error() restituisce invece una stringa di descrizione dell errore. MySQL_select-db($nomedb) $comando= Create Table Libro (IDLibro Varchar(10) PRIMARYKEY, Titolo Varchar(40), Editore Varchar(30), Autore Varchar(30)) ; MySQL_query($comando); if( MySQL_errno()==0) echo Comando eseguito con successo ; else echo Errore nell esecuzione del comando ; echo MySQL_error(); Facciamo ora un esempio di inserimento di un nuovo record in una tabella: supponiamo che i dati da inserire provengano dai campi di un form che richiama il nostro script con il metodo post. Per l acquisizione dei dati inseriti nel modulo utilizzeremo la variabile
di sistema $_POST. Questa variabile è un array associativo in cui ogni elemento è individuato dal nome del campo corrispondente nel modulo $IdLibro=$_POST[ IdLibro ]; $Titolo=$_POST[ Titolo ]; $Editore=$_POST[ Editore ]; $Autore=$_POST[ Autore ]; MySQL_select_db($nomedb) $comando= INSERT INTO Schedalibro VALUES ( $IDLibro, $Titolo, $Editore $Autore ) ; MySQL_query($comando) or die( Comando non riuscito ) Nel caso ci interessi ottenere il risultato di un interrogazione vera e propria risultano utili la funzione MySQL_num_rows(puntatore alla query) Questa funzione restituisce il numero di righe ottenute dall esecuzione di una query. Alla funzione va assegnato come parametro una variabile contenente il valore restituito dalla funzione MySQL_query. I dati veri e propri vanno estratti una riga alla volta dal risultato della query e ciò si ottiene mediante la funzione MySQL_fetch_array(puntatore ai risultati della query) Alla funzione va assegnato come parametro una variabile contenente il valore restituito dalla funzione MySQL_query.
La funzione restituirà un valore nullo quando non riuscirà più ad estrarre righe dalla query e ciò si può sfruttare per creare un ciclo while che consenta di estrarre tutte le righe ottenute dalla query. Il valore restituito dalla funzione sarà un array associativo per cui da ogni elemento di quest ultimo otterremo un campo della riga. Nell esempio seguente si presuppone che lo script sia richiamato da un form che richieda di effettuare una ricerca per autore, inserendo in una casella di testo il nome dell autore che interessa. $Autore=$_POST[ Autore ]; MySQL_select_db($nomedb) $comando= SELECT (IDLibro, Titolo, Editore FROM Schedalibro WHERE Autore= $Autore ; $ris=mysql_query($comando) or die( Comando non riuscito ) if(mysql_num_rows($ris)==0) Exit( La query non ha dato risultati ); else echo La query ha dato.mysql_num_rows($ris). risultati ; while ($riga=mysql_fetch_array($ris)) echo Codice:.$riga[ IDLibro ]. <BR> ;
echo Titolo:.$riga[ Titolo ]. <BR> ; echo Editore:.$riga[ Editore ]. <BR> ;