back to top

PHP: connessione e selezione di un database con MySQLi

Esaurito il discorso riguardante PDO, รจ possibile passare allโ€™analisi di unโ€™altra libreria per lโ€™interazione tra PHP e i database come MySQLi; come anticipato, questโ€™ultima รจ stata concepita per gestire appositamente le relazioni tra applicazioni Server Side e gli archivi basati sul MySQL, essa quindi non offre un livello di astrazione indipendente dal DBMS relazionale di riferimento come nel caso di PDO. Possiede perรฒ unโ€™interfaccia per la Programmazione Orientata agli Oggetti e supporta i Prepared statements, caratteristiche che la rendono preferibile alle classiche (ed ormai obsolete) mysql functions.

Lโ€™estensione MySQLi รจ stata introdotta in PHP con la versione 5.0.0, mentre a partire dalla release 5.3 del linguaggio tale libreria รจ stata attivata e utilizza di default il MySQL Native Driver. Non รจ quindi richiesta alcuna ulteriore operazione per la sua abilitazione.

Nellโ€™esempio seguente viene mostrato il codice necessario per effettuare le operazioni di connessione a MySQL e per la creazione di un database tramite MySQLi, come sarร  possibile notare, concettualmente la procedura prevista non differisce in modo particolare da quella descritta nel caso di PDO, esso perรฒ presenta degli aspetti peculiari che verranno affrontati subito dopo la stesura del sorgente.

<?php 
/*
  creazione di un database con MySQLi.
  La prima operazione richiesta sarร  quella relativa alla definizione
  del blocco dei parametri per la connessione
*/
// nome di host
$host = "localhost";
// username dell'utente in connessione
$user = "mrwebmaster";
// password dell'utente
$password = "...";

// stringa di connessione al DBMS
$connessione = new mysqli($host, $user, $password);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();
}

// esecuzione della query per la creazione del database
if (!$connessione->query("CREATE DATABASE nuova_rubrica")) {
    echo "Errore della query: " . $connessione->error . ".";
}else{
    echo "Databese creato correttamente.";
}

// chiusura della connessione
$connessione->close();
?>

Per consentire la connessione tra applicazione e DBMS sarร  necessario disporre anche in questo caso dei parametri richiesti, essi sono nel dettaglio:

  1. host, cioรจ lโ€™indirizzo della postazione che ospita lโ€™installazione di MySQL, generalmente esso รจ "localhost" (soprattutto nel caso di script sviluppati nella macchina locale), ma puรฒ essere anche un nome di dominio o un indirizzo IP;
  2. username: il nome dellโ€™utente che possiede i permessi per effettuare operazioni che prevedano lโ€™interazione con il DBMS e i dati da esso gestiti;
  3. password: la parola chiave che lโ€™utente precedentemente citato dovrร  utilizzare per autenticarsi su MySQL.

Tali informazioni potranno essere utilizzate per la creazione di una stringa di connessione rappresentata dallโ€™istanza dellโ€™oggetto di classe mysqli; nel caso specifico lโ€™applicazione controlla tramite il costrutto condizionale if/else e lโ€™utilizzo dei metodi connect_errno() e connect_error() lโ€™eventuale verificarsi di errori in fase di connessione. Nel caso in cui si dovessero verificare dei problemi, il primo metodo restituirร  il codice identificativo dellโ€™errore prodotto dallโ€™ultimo tentativo di connessione effettuato, mentre il secondo metterร  a disposizione una stringa descrittiva dellโ€™errore generato.

Nel caso in cui, invece, non dovessero presentarsi degli errori in connessione, lโ€™applicazione proseguirร  nel suo funzionamento passando alla fase relativa alla creazione del database, chiamato nel nostro caso "nuova_rubrica", che potrร  essere eseguita tramite il passaggio al metodo query() dellโ€™istruzione SQL CREATE DATABASE seguita dal nome del database desiderato. Indipendentemente dallโ€™esito di questโ€™ultimo passaggio la connessione verrร  chiusa grazie allโ€™invocazione del metodo close().

Ora che si dispone di un database su cui operare, sarร  possibile passare allโ€™istanza dellโ€™oggetto di classe mysqli un ulteriore parametro, quello relativo al nome del database stesso; in questo modo sarร  possibile ottenere un sorgente completo per la connessione e la selezione della base di dati che potrร  essere salvato in un file (denominato ad esempio "connessione.php"):

<?php
/*
  Connessione al DBMS e selezione del dataabse.
*/
# blocco dei parametri di connessione
// nome di host
$host = "localhost";
// username dell'utente in connessione
$user = "mrwebmaster";
// password dell'utente
$password = "r5n8k6nd";
// nome del database
$db = "nuova_rubrica";


# stringa di connessione al DBMS
// istanza dell'oggetto della classe MySQLi
$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();
}
?>

Tale file potrร  essere richiamato in qualsiasi momento tramite una semplice inclusione, ciรฒ eviterร  di dover riscrivere il codice contenuto al suo interno ogni volta che esso diventi necessario per operare sul database.

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.