Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 16 di 56
  • livello intermedio
Indice lezioni

PDO: estrazione dati dal database

Analizziamo insieme le funzioni offerte dalla libreria PDO per effettuare operazioni di estrazione di record dai database e visualizzazione dei dati con PHP.
Analizziamo insieme le funzioni offerte dalla libreria PDO per effettuare operazioni di estrazione di record dai database e visualizzazione dei dati con PHP.
Link copiato negli appunti

Affrontiamo ora l'argomento riguardante l'estrazione dei dati da un database e della visualizzazione degli stessi in una pagina Web. Come sempre, supponiamo di avere a disposizione la connessione al nostro database e prepariamo la prima query con lo schema proposto nella lezione precedente.

$sql = 'SELECT nome, cognome, FROM utenti';
$stmt = $db->prepare($sql);
$stmt->execute();

Un'ulteriore questione, abbastanza frequente in ambito pratico, è legata all'uso di SELECT con un LIKE nella clausola WHERE combinando il tutto con una query parametrica. In questo caso la parte che rappresenta il parametro sarà solo quella della variabile, senza tenere in considerazione i caratteri jolly che fanno parte dell'SQL:

$sql = 'SELECT nome, cognome, FROM utenti WHERE email like "%:email%"';
$stmt = $db->prepare($sql);
$stmt->bindParam(':email', $email, PDO::FETCH_ASSOC);
$stmt->execute();

A questo punto, un primo problema interessante potrebbe essere questo: sono stati estratti record? E se sì, quanti? Per rispondere a questa domanda possiamo memorizzare il numero totale di record estratti in una variabile totale e usare il metodo rowCount():

$totale = $stmt->rowCount();

L'istruzione fetch

Supponendo che siano stati estratti dei record dovremo eseguire un ciclo per stampare tali risultati nella nostra pagina, effettueremo tale procedura nello stesso modo in cui opereremmo per compiere qualsiasi altra operazione legata all'uso di dati estratti dal database:

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    echo '
' . $row['nome'] . ' ' . $row['cognome'] . '
';
}

Con questa istruzione facciamo scorrere i dati estratti dal database associando ad ogni riga la variabile $row grazie al metodo fetch(), invece PDO::FETCH_ASSOC ci dice che stiamo creando un array associativo usando come chiavi i nomi dei campi, questa variabile è più utilizzata rispetto a PDO::FETCH_NUM che usa un indice numerico e rende quindi obbligatorio rispettare l'ordine dei campi espresso nell'istruzione SELECT.

L'istruzione fetchAll

Un caso abbastanza interessante è costituito dalla situazione in cui vogliamo inviare al client l'output in formato JSON, in questo caso non è necessario eseguire il loop con while o foreach e, più semplicemente, possiamo usare l'istruzione fetchAll. Quindi dopo l'esecuzione della query il codice necessario potrebbe essere:

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
print json_encode($rows);

Quest'ultimo caso si presta anche ad una variante di utilizzo dati con un ciclo foreach:

foreach($rows as $row){
echo '
' . $row['nome'] . ' ' . $row['cognome'] . '
';
}

Da un punto di vista tecnico fetchAll è più veloce rispetto al semplice fetch ma consuma un maggiore quantitativo di memoria.

Ti consigliamo anche