In una precedente lezione abbiamo analizzato le funzioni a disposizione per
. Vediamo ora come possiamo utilizzare alcune di queste funzioni per recuperare dei dati da un database e trasformarli in JSON.
In questa lezione faremo uso dell'estensione PDO che ci consente di accedere al database ed effettuare query. Per approfondire l'argomento si può fare riferimento alla
[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager.
Gli esempi di questo articolo utilizzano il linguaggio MySQL, PDO è però un layer di astrazione che consente di connetterci anche a database differenti.
La struttura dati
Prima di procedere creiamo una struttura dati e popoliamola con alcuni dati di prova:
CREATE TABLE user (
id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
firstName VARCHAR(100) NOT NULL ,
lastName VARCHAR(100) NOT NULL ,
email VARCHAR(100) NOT NULL ,
PRIMARY KEY ('id')
) ENGINE = InnoDB;
INSERT INTO user (id, firstName, lastName, email)
VALUES (NULL, 'Simone', 'D\'Amico', 'simone@email.it'),
(NULL, 'Mario', 'Rossi', 'mario@email.it');
Connessione al database
Il prossimo step consisterà nel creare la connessione al database che ci permetterà di effettuare le query per recuperare i dati:
$user = 'root';
$password = 'root';
$db = 'test';
$host = 'localhost';
$port = 8889;
$conn = new PDO("mysql:host=$host; dbname=$db; port=$port", $user, $password);
Recuperare i dati e convertirli in JSON
Ora che abbiamo un accesso al database possiamo effettuare le nostre query e convertire il risultato in un array JSON popolati con gli utenti presenti nel database.
$result = [];
$stmt = $conn->query("SELECT * FROM user");
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$result[] = $row;
}
echo json_encode($result);
Il codice appena mostrato effettua la query al nostro database recuperando gli utenti; ciclando sui risultati creiamo un array che li contiene tutti. A questo punto grazie alla funzione json_encode()
possiamo restituire l'array in formato JSON.
Il risultato che otterremo è il seguente:
[
{
id: "1",
firstName: "Simone",
lastName: "D'Amico",
email: "simone@email.it"
},
{
id: "2",
firstName: "Mario",
lastName: "Rossi",
email: "mario@email.it"
}
]