back to top

MySQL functions: inserimento, selezione e lettura dei dati

Una volta effettuate le fasi di connessione al DBMS, creazione e selezione del database, generazione della tabella e popolamento di quest’ultima tramite i campi desiderati, si potranno eseguire le classiche operazioni previste dal già citato schema CRUD per l’inserimento, la lettura, l’aggiornamento e la cancellazione dei dati.

Inserimento dei dati in tabella

Dopo aver incluso il file per la connessione a MYSQL e la selezione della base di dati, sarà possibile inserire dei dati nei campi della tabella passando una query basata sul comando INSERT INTO alla funzione mysql_query(), destinata all’esecuzione delle istruzioni SQL.

<?php
/*
  inserimento di dati con le MySQL functions
*/
include "connessione.php";

// query per l'inserimento
$query = "INSERT INTO nominativi (nome_utente, cognome_utente, email_utente) VALUES ('Homer', 'Simpson', '[email protected]')";

// inserimento dei dati
$esecuzione_query = mysql_query($query) or die ("Impossibile inserire i dati: " . mysql_error());

// chiusura della connessione
mysql_close($connessione);
?>

Ad INSERT INTO seguiranno i nomi dei campi coinvolti e i valori da inserire all’interno di essi; se dovessero verificarsi degli errori la funzione mysql_error() si occuperà di segnalarli, in caso contrario la query potrà considerarsi eseguita e la funzione mysql_close() chiuderà la connessione effettuata.

Recupero dei dati selezionati con mysql_fetch_row()

I dati inseriti in tabella potranno essere ora estratti e stampati a video; per far questo le MySQL functions offrono diverse soluzioni, tutte ugualmente valide ma caratterizzate da piccole differenze. Il primo caso che verrà trattato sarà quello della funzione mysql_fetch_row(), essa restituisce un recordset di risultati, prodotti dall’esecuzione di un’istruzione passata come argomento alla funzione mysql_query(), all’interno di un array dotato di indici numerici. Un semplice esempio riguardante il loro utilizzo potrebbe essere concepito in questo modo:

<?php
/*
  estrazione di dati dalla tabella
*/
// inclusione del file per la connessione e la selezione del database
include "connessione.php";

// query per la selezione dei dati
$query = mysql_query("SELECT nome_utente, cognome_utente, email_utente FROM nominativi") or die ("Impossibile eseguire la query: " . mysql_error());

// controllo sul numero dei record coinvolti
if (mysql_num_rows($query) > 0){
  // ciclo per l'estrazione dei risultati
  while ($row = mysql_fetch_row($query)) {
    echo "Nome: " . $row[0]
       . " Cognome: " . $row[1]
       . " Email: " . $row[2]
       . "<br>";
  }
}

// liberazione dai risultati in memoria
mysql_free_result($query);

// chiusura della connessione
mysql_close($connessione);
?>

Ecco perché per stampare a video tramite il ciclo while i valori estratti in seguito alla SELECT verranno utilizzati quale riferimento degli indici numerici (nel nostro esempio da "0" a "2"). E’ possibile utilizzare mysql_fetch_row() anche al di fuori di un ciclo, ma sarà possibile ricorrere a tale alternativa soltanto nel caso in cui si voglia estrarre un singolo record.

Da notare l’utilizzo della funzione mysql_free_result() che consentirà di liberare le risorse occupate in seguito all’esecuzione della query SELECT.

Recupero dei dati selezionati con mysql_fetch_assoc()

La funzione mysql_fetch_assoc() restituisce un recordset di risultati all’interno di un array associativo ed è in questo particolare che essa si differenzia da mysql_fetch_row() che invece fa riferimento ad un array di tipo numerico. Sulla base di tale caratteristica è possibile modificare in questo modo la parte relativa all’estrazione dei dati tramite ciclo while dell’esempio precedente:

while ($row = mysql_fetch_assoc($query)) {
  echo "Nome: " . $row['nome_utente']
     . " Cognome: " . $row["cognome_utente"]
     . " Email: " . $row["email_utente"]
     . "<br>";
}

La logica applicativa è in linea di massima la stessa, cambia invece, oltre alla funzione utilizzata, anche la modalità adottata per la stampa a video, dove ogni valore diverrà disponibile grazie all’indice associativo assegnato ad esso che, nel caso specifico, sarà il nome del campo in cui è stato memorizzato,

Recupero dei dati selezionati con mysql_fetch_array()

La funzione mysql_fetch_array() modificherà il suo comportamento in base al secondo parametro che le viene passato come argomento, il primo sarà ancora una volta il risultato dell’applicazione di mysql_query() sulla query SELECT. Il secondo parametro potrà assumere tre diversi valori:

  • MYSQL_ASSOC: restituisce un recordset di risultati all’interno di un array associativo (come in mysql_fetch_assoc());
  • MYSQL_NUM: restituisce un recordset di risultati all’interno di un array indicizzato numericamente (come in mysql_fetch_row());
  • MYSQL_BOTH: restituisce un recordset di risultati all’interno di un array dotato di indici numerici e associativi.

Quello previsto per il terzo valore è in pratica il comportamento predefinito in caso di mancata indicazione del secondo parametro, motivo per il quale sarà possibile ottenere un risultato comunque corretto stampando i dati selezionati con un’istruzione del genere basata sugli indici numerici:

while ($row = mysql_fetch_array($query)) {
  echo "Nome: " . $row[0]
     . " Cognome: " . $row[1]
     . " Email: " . $row[2]
     . "<br>";
}

così come utilizzando il seguente formato basato sugli indici associativi:

while ($row = mysql_fetch_array($query)) {
  echo "Nome: " . $row['nome_utente']
     . " Cognome: " . $row["cognome_utente"]
     . " Email: " . $row["email_utente"]
     . "<br>";
}

Recupero dei dati selezionati con mysql_fetch_object()

La funzione mysql_fetch_object() restituisce un recordset di risultati all’interno di un oggetto le cui proprietà corrisponderanno ai campi del record, la sua peculiarità rispetto ai tre costrutti analizzati in precedenza risulta quindi immediatamente evidente per via del fatto che in questo caso i risultati non sono contenuti in un array. Anche in questo caso, l’estrazione dei dati viene effettuata attraverso un ciclo, come nell’esempio proposto di seguito:

while ($obj = mysql_fetch_object($query)) {
  echo "Nome: " . $obj->nome_utente
     . " Cognome: " . $obj->cognome_utente
     . " Email: " . $obj->email_utente
     . "<br>";
}

Per ogni iterazione del ciclo i valori selezionati verranno stampati a video in quanto associati alle diverse proprietà dell’oggetto che corrisponderanno ai nomi dei campi coinvolti.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.