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.