Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 2 di 56
  • livello intermedio
Indice lezioni

MySQLi: interfaccia ad oggetti e connessione al database

Analizziamo l'estensione MySQLi, scopriamo perché scegliere la sua interfaccia ad oggetti per interagire con MySQL e come connettersi ad un database.
Analizziamo l'estensione MySQLi, scopriamo perché scegliere la sua interfaccia ad oggetti per interagire con MySQL e come connettersi ad un database.
Link copiato negli appunti

MySQLi: scegliere l'interfaccia

Nel capitolo precedente abbiamo analizzato le principali differenze tra le diverse librerie messe a disposizione da PHP per l'interazione con il DBMS MySQL; partiamo quindi esaminando il funzionamento di MySQLi (MySQL improveded). Come anticipato, una caratteristica peculiare di questa estensione è quella di disporre di una doppia interfaccia: procedurale e ad oggetti.

Questo significa che, sfruttando l'approccio procedurale, abbiamo a disposizione una sintassi estremamente simile a quella della prima estensione fornita nativamente dal linguaggio per MySQL, le cosiddette mysql functions, aspetto che può risultare rilevante per chi era già avvezzo a queste ultime e intende modificare il meno possibile il proprio codice. Ricordiamo però che le mysql functions non vanno più considerate un'alternativa valida, non sono incluse in PHP 7 e vengono sconsigliate dalla stessa comunità degli sviluppatori di PHP anche perché prive di una propria interfaccia ad oggetti.

Non ci sono particolari differenze fra i due stili di programmazione a livello di prestazioni, ed è quindi possibile scegliere liberamente l'uno o l'altro; dobbiamo tuttavia tenere presenti i vantaggi della programmazione object oriented: il codice è più facilmente riutilizzabile nonché più facilmente comprensibile nella misura in cui programmi, anche molto complessi, possono essere scissi in parti indipendenti che dialogano fra loro; per lo stesso motivo anche il debugging e le modifiche, così come un'eventuale estensione delle funzionalità, sono più semplici da eseguire. Il paradigma OOP si rivela poi particolarmente utile in sede di sviluppo collaborativo.

Nel corso della guida per gli esempi di codice ci rifaremo sempre alla programmazione orientata agli oggetti, ma se siamo interessati alla possibilità di usare l'approccio procedurale, questa pagina della documentazione ufficiale risulterà un utile strumento poiché mette in parallelo i metodi della classe con le rispettive funzioni presenti nella libreria.

Istanziare la classe per connettersi al database

Per iniziare a lavorare con la libreria è necessario innanzitutto istanziare la relativa classe: il costruttore di MySQLi utilizzerà i parametri da noi forniti, o quelli di default se non ne vengono specificati altri, per aprire la connessione con il DBMS, essa sarà il nostro tramite per comunicare di volta in volta le operazioni da svolgere sul database. I metodi connect_error() e connect_errno() potrebbero esserci utili per controllare l'avvenuta connessione:

$mysqli = new mysqli('localhost', 'username', 'password', 'nome_database');
		if ($mysqli->connect_error) {
    		die('Errore di connessione (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
		} else {
			echo 'Connesso. ' . $mysqli->host_info . "\n";
		}

Questo semplice codice apre la connessione creando un nuovo oggetto, e poi la verifica tramite il metodo connect_error(): nel caso si verifichi un errore lo script viene interrotto stampando a schermo il codice di errore (connect_errno) e la sua descrizione, mentre se la connessione viene stabilita viene invocato il metodo host_info che restituisce una stringa con l'host del DBMS e il metodo di connessione. L'output più comune nei sistemi Unix-like risulterà essere:

Connesso. Localhost via UNIX socket

I parametri da passare al costruttore sono soltanto 4 più un argomento opzionale:

  1. l'host, cioè l'indirizzo della macchina in cui sta girando MySQL, indicato tramite il nome o l'indirizzo IP (in locale nella stragrande maggioranza dei casi si tratterà di localhost);
  2. il nome utente dell'utilizzatore abilitato ad inviare istruzioni al DBMS sulla base dei permessi che gli sono stati accordati;
  3. la password associata al nome utente utilizzato;
  4. il nome del database;
  5. eventualmente la porta (di base impostata su 3306) e il socket (di default nei sistemi Unix-like è impostata come /tmp/mysql.sock).

Concentrandoci sull'aspetto pratico non è necessario dettagliare il significato di questi ultimi due parametri: teniamo presente che gli ambienti di lavoro più comuni, ad esempio lo sviluppo in locale con strumenti come WAMP, LAMP o XAMPP, o un hosting remoto con servizio database, forniscono nella loro documentazione la configurazione completa per la connessione al DBMS.

Naturalmente il codice proposto è consigliabile soltanto per i siti Web in fase di sviluppo, e non per quelli in produzione. Terminare lo script con un die() e fornire le informazioni di sistema sull'errore che si è verificato è decisamente sconsigliato per qualsiasi applicazione pubblicamente accessibile, motivo per il quale questo controllo potrà essere disattivato prima del deployment una volta completata l'applicazione.

Ti consigliamo anche