Per mostrare il funzionamento dei principali metodi disponibili per la classe MySQLi inizieremo a costruire una semplice applicazione Web. L'esempio che proponiamo è quello della gestione di una biblioteca. I dati sui quali opereremo saranno quindi relativi ai libri a disposizione nel catalogo, agli utenti abilitati, e ai prestiti passati e in corso, oltre alle credenziali degli amministratori.
Per iniziare progettiamo la struttura di quattro tabelle (login di accesso, libri, utenti e prestiti) con i relativi campi che ci consentiranno di creare delle relazioni fra loro.
Creiamo quindi la connessione a DBMS, ma stavolta senza specificare il perché vogliamo crearne uno apposito per l'applicazione, poi utilizziamo uno dei metodi più importanti della classe, query
:
$mysqli = new mysqli('localhost', 'root', 'password');
if ($mysqli->connect_error) {
die('Errore di connessione (' . $mysqli->connect_errno . ') . $mysqli->connect_error);
}
// Creo il database
$mysqli->query("CREATE DATABASE biblioteca");
// Seleziono il database
$mysqli->query("USE biblioteca");
Il metodo query
accetta come parametro la query SQL da passare a MySQL, e restituisce il booleano TRUE a meno che la query generi un errore. Nel codice proposto l'abbiamo utilizzato prima per creare il database dell'applicazione e poi per selezionare quest'ultimo come nostro ambiente di lavoro.
Il metodo error
può essere usato di seguito per ottenere la stringa di errore eventualmente generata da MySQL. Supponiamo ad esempio di scrivere:
if (!$mysqli->query("CRREATE DATABASE biblioteca")) {
die($mysqli->error);
}
In questo caso si tratta di un semplice errore di battitura del comando CREATE
. Otterremo quindi come risultato l'arresto dello script e la stampa a schermo dell'errore restituito da MySQL:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CRREATE DATABASE biblioteca' at line 1
Un esito che naturalmente eviteremmo per il sito in produzione e che prendiamo in considerazione solo per la fase di debug.
La creazione delle tabelle
Procediamo sempre col metodo query
per la creazione delle tabelle necessarie, e richiamando la keyword SQL CREATE
:
// creazione della tabella per il login
$mysqli->query("CREATE TABLE 'login'
( 'id' INT ( 5 ) NOT NULL AUTO_INCREMENT,
'user' VARCHAR(40) NOT NULL,
'password' VARCHAR(64) NOT NULL,
PRIMARY KEY ('id'))");
// creazione della tabella per i libri
$mysqli->query("CREATE TABLE 'libri'
( 'id' INT(5) NOT NULL AUTO_INCREMENT,
'autore' VARCHAR(40) NOT NULL,
'titolo' TEXT NOT NULL,
'editore' VARCHAR(40) NOT NULL,
'anno' SMALLINT(2) NOT NULL,
PRIMARY KEY ('id'))");
// creazione della tabella per gli utenti
$mysqli->query("CREATE TABLE 'utenti'
( 'id' INT(5) NOT NULL AUTO_INCREMENT ,
'nome' VARCHAR(30) NOT NULL ,
'cognome' VARCHAR(30) NOT NULL ,
'indirizzo' TEXT NOT NULL ,
'nascita' DATE NOT NULL ,
PRIMARY KEY ('id'))");
// creazione della tabella per i prestiti
$mysqli->query("CREATE TABLE 'prestiti'
( 'id' INT NOT NULL AUTO_INCREMENT ,
'id_utente' INT NOT NULL ,
'id_libro' INT NOT NULL ,
'data' DATE NOT NULL ,
'restituito' ENUM('0','1') NOT NULL ,
PRIMARY KEY ('id'))");
Ricordiamo velocemente che l'id di ogni tabella, un valore univoco automaticamente incrementato dal DBMS, è lo strumento con il quale costruiremo le relazioni che ci permetteranno di collegare gli utenti ai prestiti in corso, e questi, a loro volta, ai libri.
Nella prossima lezione analizzeremo la struttura delle tabelle in relazione alle operazioni che intendiamo svolgere sul database utilizzando MySQLi.