Le fasi relative alla connessione con il DBMS MySQL e alla creazione di un nuovo database (denominato "nuova_rubrica") tramite la libreria MySQLi sono state affrontate nel capitolo precedente di questa trattazione; il prossimo passaggio da effettuare sarร quindi quello di generare una tabella allโinterno della base di dati, tale tabella sarร poi popolata tramite dei campi destinati ad ospitare le informazioni da archiviare.
Creazione di una nuova tabella MySQL
Nello specifico, la procedura proposta riguarderร la creazione di una tabella contenente 3 diversi campi:
- id: un campo autoincrementale numerico di tipo intero della lunghezza di 4 cifre destinato a fungere anche da chiave primaria;
- nome: un campo non nullo di tipo VARCHAR, destinato quindi ad ospitare valori alfanumerici, della lunghezza massima di 30 caratteri;
- cognome: un campo non nullo di tipo VARCHAR della lunghezza massima di 40 caratteri.
Una volta definiti i campi di nostro interesse, questi potranno essere generati dopo che lโapplicazione deputata a tale compito avrร effettuato la connessione a MySQL per poi selezionare il database da manipolare; come anticipato, tali operazione non dovranno essere ripetute perchรฉ giร previste nel file "connessione.php" definito nel capitolo precedente e richiamato allโinizio del sorgente proposto di seguito attraverso lโistruzione include().
<?php
/*
generazione di una tabella con MySQLi
*/
// inclusione del file di connessione
include "connessione.php";
// esecuzione della query per la creazione del database
if (!$connessione->query("CREATE TABLE IF NOT EXISTS agenda (
id int(4) NOT NULL AUTO_INCREMENT,
nome varchar(30) NOT NULL,
cognome varchar(40) NOT NULL,
PRIMARY KEY (id)
)")) {
echo "Errore della query: " . $connessione->error . ".";
}else{
echo "Tabella creata correttamente.";
}
// chiusura della connessione
$connessione->close();
?>
Nel codice presentato lโistruzione SQL necessaria per la generazione della tabella viene passata come parametro al metodo query() che, come visto in precedenza, viene utilizzato per effettuare una richiesta ("query") ad un database; in questo caso il comando SQL di riferimento รจ CREATE TABLE. Grazie alla clausola IF NOT EXISTS, e al fine di evitare ambiguitร , lโistruzione controllerร innanzitutto che il nome scelto per la tabella desiderata (chiamata in questo caso "agenda") non sia giร stato utilizzato allโinterno del database "nuova_rubrica" per unโaltra tabella, fatto questo e in mancanza di omonimie, si passerร alla fase relativa alla creazione dei campi.
Il metodo query() รจ delimitato allโinterno di un blocco if/else, nel caso in cui lโistruzione SQL passata come parametro ad esso dia origine ad un errore, questโultimo verrร intercettato attraverso il metodo error(), esso infatti avrร il compito di restituire a video una stringa destinata a descrivere la natura dellโerrore prodotto in seguito alla chiamata piรน recente ad una funzione di MySQLi.
Una volta eseguita la query al database, e indipendentemente dal risultato ottenuto, il giร citato metodo close() si occuperร di chiudere la connessione al DBMS in modo da terminare il ciclo di esecuzione dello script.
Se lโistruzione lanciata dovesse permettere di ottenere il risultato atteso, allora si potrร disporre di una tabella completa di campi che, a loro volta, potranno essere popolati tramite i dati.
Popolare la tabella con INSERT INTO
Una volta creato il database ("nuova_rubrica"), generata una tabella allโinterno di esso ("agenda") con tanto di campi per la memorizzazione delle informazioni, la fase relativa allโinserimento dei dati apparirร particolarmente semplice; in questo caso infatti verrร fatto ricorso a metodi giร ampiamente utilizzati in questa porzione di guida dedicata a MySQLi, a cambiare sarร invece lโistruzione SQL utilizzata.
Anche per quanto riguarda la procedura di archiviazione dei dati in tabella non si potrร fare a meno di includere il file "connessione.php" (definito nel in una lezione precedente) per effettuare i passaggi relativi alla connessione al Database Manager e alla selezione del database da utilizzare; ciรฒ avverrร quindi, come visto in precedenza, allโinizio del codice.
Nel caso specifico dellโesempio proposto di seguito verranno inseriti due nuovi valori in corrispondenza dei campi "nome" e "cognome", il campo "id", essendo un autoincrementale, provvederร ad incrementarsi autonomamente e automaticamente in concomitanza con lโaggiunta dei due nuovi record. Gli approfondimenti su i diversi passaggi verranno forniti immediatamente dopo il sorgente.
<?php
/*
inserimento di dati in una tabella con MySQLi
*/
// inclusione del file di connessione
include "connessione.php";
// esecuzione della query per l'inserimento dei record
if (!$connessione->query("INSERT INTO agenda (nome, cognome) VALUES ('Lionel', 'Messi'),('Iker', 'Casillas')")) {
echo "Errore della query: " . $connessione->error . ".";
}else{
echo "Inserimenti effettuati correttamente.";
}
// chiusura della connessione
$connessione->close();
?>
Come anticipato, le novitร contenute nel codice precedente non sono tantissime; sostanzialmente, dopo lโinclusione del file per la connessione al DBMS e la selezione del database verrร richiamato il giร noto metodo query(). Questโultimo, come giร piรน volte visto, si occuperร di eseguire unโistruzione SQL basata sul comando INSERT INTO a cui seguirร il nome della tabella coinvolta, i nomi dei campi da popolare (indicati tra parentesi tonde) e i valori da inserire introdotti tramite la clausola VALUES.
Anche questa volta il metodo per lโesecuzione della query รจ interno ad un costrutto condizionale, infatti, grazie allโutilizzo del blocco if/else lโapplicazione avrร la possibilitร di controllare lโeventuale presenza di errori collegati allโesecuzione dellโistruzione SQL; il metodo error() si occuperร quindi di restituire a video una breve descrizione di tale errore nel caso in cui esso dovesse verificarsi venendo intercettato.
Se non dovessero essere generati errori, lo script proseguirร nella sua esecuzione confermando lโavvenuto inserimento; vi sarร poi il passaggio alla fase di chiusura della connessione che avverrร indipendentemente dal risultato (e dal funzionamento) della query tramite lโazione del metodo close().
Anche se non particolarmente articolata, almeno per quanto riguarda il semplice caso proposto, la procedura richiesta per lโinserimento dei dati รจ fondamentale perchรฉ mette a disposizione delle informazioni che potranno essere estratte, aggiornate o cancellate (si ricordino i precedenti riferimenti allo schema CRUD, Create, Read, Update e Delete, per la gestione dei dati), come accadrร nei capitoli seguenti tramite lโutilizzo delle funzionalitร messe a disposizione da MySQLi.