back to top

Creare e popolare una tabella con PHP e MySQLi

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:

  1. id: un campo autoincrementale numerico di tipo intero della lunghezza di 4 cifre destinato a fungere anche da chiave primaria;
  2. nome: un campo non nullo di tipo VARCHAR, destinato quindi ad ospitare valori alfanumerici, della lunghezza massima di 30 caratteri;
  3. 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.

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.