Abbiamo, nel primo articolo, affrontato la connessione PDO al DataBase (nel nostro caso, e in tutti gli esempi successivi) con MySQL; soprattutto si è cercato di intuire e spiegare quali sono i vantaggi che porta questo nuovo tipo di gestione delle informazioni delle base dati, nonché la gestione degli eventuali errori di connessione. Adesso, però, scendiamo più nel dettagli e, partendo dalla nostra connessione così come l’abbiamo scritta nel primo articolo, vediamo cosa possiamo fare con e delle nostre query.
Supponiamo di voler ottenere informazioni da una tabella utenti tramite la query
$sql = “SELECT * FROM utenti where email=’mia@email.it'”:
Lanciamo la nostra query con il nostro oggetto $db istanziato come nel precedente articolo come segue:
$stat = $db–>query($sql);
Da questo momento l’array $stat (che sta solitamente per statement) viene popolato, qualora esistano, dai risultati della query. Quello che ci interessa è trattarli al fine di gestire nel modo migliore possibile come informazioni che giungono dal DB.
Vogliamo, ad esempio, condizionare lo script PHP in base al numero di risultati restituitoci? Ecco un esempio:
$count = $db–>rowCount();
if ($count == 0) {
echo “Nessun risultato”;
}
elseif($count == 1) {
//qualcos’altro
}
else {
//qualcosa
}
Il metodo rowCount() ha l’identico comportamento del vecchio mysql_num_rows. Se ci interessa visualizzare le informazioni a video, possiamo invece seguire diverse strade, tutte non troppo dissimili, in realtà, dalle vecchie metodologie usate nel vecchio paradigma.
Se, ad esempio, vogliamo visualizzare a video tutte le informazioni ottenute dalla query, possiamo usare il metodo fetchAll():
$contenuto = $db-> fetchAll();
print_r($contenuto); //va bene anche var_dump()
Il metodo fetchAll() si occupa di riversare il contenuto risultante della query in un array associativo in cui le coppie nome->valore equivalgono a nome_colonna->contenuto, cosa che ci permette di formattare il contenuto di un div o di una tabella nel modo che preferiamo. Ma questo, per esperienza, è un metodo che ha più senso quando il numero di righe restituite è di 1.
Se il numero di righe restituite dalla query è superiore, possiamo anche decidere di ciclare il tutto come segue:
foreach($db->query($sql) as $row){
echo $row[‘nome’]. ‘<br>’;
echo $row[‘cognome’]. ‘<br>’;
echo $row[‘cap’]. ‘<br>’;
}
E, ovviamente, assegnandole a variabili, condizionali e tutto quanto necessitiamo all’interno del foreach.
Nella prossima lezione ci occuperemo delle query di INSERT, UPDATE e DELETE e scopriremo come, anche qui, PDO riesce ad accelerare notevolmente il lavoro e anche la gestione delle variabili.
Alla prossima!