Upload
petronella-andreoli
View
220
Download
0
Embed Size (px)
Citation preview
Interazione col DBPer interagire con una base dati da una
pagina PHP occorre procedere come segue:
Eseguire la connessione al DBMS MySQL in ascolto;
Selezionare la base dati su cui si vuole operare;
Richiedere l’ecuzione delle query e gestire i risultati restituiti.
Connessione al DBMS (1/3)La connessione al DBMS viene effettuata
tramite la funzione mysql_connect() che restituisce un identificativo di connessione MySQL in caso di successo oppure FALSE in caso di fallimento.
La sintassi di tale funzione èresource mysql_connect ( [string server [,
string nome_utente [, string password [, bool nuova_connessione [, int client_flags]]]]] )
Il significato dei parametri è il seguente:
Connessione al DBMS(2/3)resource rappresenta un identificatore della connessione
col DB (da utilizzare nelle chiamate alle successive funzioni di interrogazione) e FALSE in caso di fallimento
server rappresenta il nome host del database server e relativa porta. Default: localhost:3306;
nome_utente è il nome dell'utente per il login al database. Di default corrisponde all'utente che possiede il processo corrente.
password è la password per il login al database. Di default è una stringa vuota;
nuova_connessione di default, se viene effettuata una seconda chiamata a mysql_connect con gli stessi parametri, non viene aperta una nuova connessione ma la funzione restituisce l'ID della connessione esistente. Se questo parametro è impostato a TRUE viene aperta una nuova connessione ad ogni chiamata.
Connessione al DBMS(3/3)La connessione al server sarà chiusa non prima
della fine dell'esecuzione dello script, a meno che questa non sia precedentemente chiusa esplicitamente richiamando mysql_close().
Un esempio di connessione è il seguente:<?php
$connessione = mysql_connect("localhost", "utente_mysql", "password_mysql") or die("Connessione non riuscita: " . mysql_error()); print ("Connesso con successo"); mysql_close($connessione);?>
Selezione della base datiSe la connessione al DBMS è avvenuta con
successo allora è possibile procedere alla selezione della base dati su cui si intende operare.
Per fare ciò occorre utilizzare la funzione mysql_select_db().
La sintassi di tale funzione è la seguente:bool mysql_select_db ( string nome_database [,
resource identificativo_connessione] )Tale funzione imposta il database attualmente
attivo sul server associato all'identificativo di connessione specificato.
Se nessin identificativo di connesione è specificato, viene considerata l'ultima connessione aperta.
Esempio di selezioneUn esempio di selezione della base dati è dato
dalla seguente porzione di codice:…….$connessione = mysql_connect("host_mysql", "ut
ente_mysql", "password_mysql") or die("Connessione non riuscita: " . mysql_error()); print "Connesso con successo";mysql_select_db("mio_database“, $connessione) or die("Selezione del database non riuscita");
…..
Esecuzione delle queryDopo aver selezionato la base dati su cui agire è
possibile interagire con essa tramite la richiesta di esecuzione di una più query.
L’esecuzione di comandi SQL avviene attraverso la seguente funzione mysql_query().
La sintassi di tale funzione è la seguente:resource mysql_query ( string query [, resource
identificativo_connessione [, int modo_risultato]] )Tale funzione invia una query al database
attualmente attivo sul server associato all'identificativo di connessione specificato . Se nessun identificativo è specificato viene considerata l'ultima connessione aperta.
Esecuzione delle querySolo per le istruzioni SELECT, SHOW, EXPLAIN
o DESCRIBE mysql_query() restituisce un identificativo di risorsa o FALSE se la query non è stata eseguita correttamente.
Per altri tipi di istruzioni SQL, mysql_query() restituisce TRUE in caso di successo e FALSE in caso di errore.
Un esempio di utilizzo della suddetta funzione è:<?php
$risultato = mysql_query("SELECT mia_colonna FROM mia_tabella") or die("Query non valida: " . mysql_error());?>
Gestione dei risultatiSe la query ha successo è possibile richiamare
le seguenti funzioni:mysql_num_rows() per scoprire quante righe
sono state restituite da un'istruzione SELECT, ad esempio;
mysql_affected_rows() per scoprire quante righe sono state coinvolte da un'istruzione DELETE, INSERT, REPLACE o UPDATE;
mysql_fetch_array () carica una riga del risultato come un array associativo, un array numerico o entrambi;
mysql_fetch_row () ottiene una riga del risultato come un array enumerato.
Gestione dei risultati Un esempio di gestione dei risultati è il seguente:
$sql = "SELECT codice, descrizione FROM prodotti";
$result = mysql_query($sql);$array = mysql_fetch_array($result);print "CODICE: ".$array['codice']."<br>";print "DESCRIZIONE: ".
$array['descrizione']."<br>";
Gestione dei risultatiInfatti, eseguendo il comando
print_r( mysql_fetch_array($result) )si otterrebbe il seguente output:Array (
[0] => 0001 [codice] => 0001 [1] => Computers [descrizione] =>Computers
)
Gestione dei risultatiUn esempio di gestione dei risultati è il
seguente:
$sql = "SELECT codice, descrizione FROM prodotti";
$result = mysql_query($sql);$array = mysql_fetch_row($result);print "CODICE: ".$array[0]."<br>";print "DESCRIZIONE: ".$array[1]."<br>";
Ottenere l’ID dell’ultimo record inserito$sql = "INSERT INTO categoria (id,
descrizione) VALUES (NULL, '".$_POST['descrizione']."')"; // sia id di tipo AUTO_INCREMENT$result = mysql_query ($sql);$new_id_cat = mysql_inserted_id();$sql = "INSERT INTO prodotto (id, id_categoria, descrizione) VALUES (NULL, '$new_id_cat', '".$_POST['descrizione']."')"; // sia id di tipo AUTO_INCREMENT$result = mysql_query ($sql);