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.