Corso PHP: 24.3 – Accedere a MySQL da PHP (Parte 1^)

24.3  Accedere a MySQL da PHP

Per creare il nostro database sul nostro servizio di hosting bisognerà seguire i seguenti passi in sequenza:

  1. Creazione del Database
  2. Crezione nuovo utente
  3. Creazione password utente
  4. Associazione utente a database
  5. Assegnazione diritti all’utente

E’ sufficiente cliccare su ‘Creazione database’ nel proprio pannello di controllo e poi seguire gli step come richiesti dal sistema. Un esempio dei primi 4 passi del processo è mostrato nelle due figure seguenti.

Creazione nuovo database
Creazione nuovo database

 

Aggiungere user
Aggiungere user

Per caricare il nostro database creato localmente sul server remoto del nostro ISP sarà quindi sufficiente esportare l’intero database (quando tutta l’applicazione sarà stata creata e testata localmente) e importarlo sul database remoto. Nella figura riportata di seguito è evidenziato il bottone ‘Esporta’ col quale sarà possibile esportare l’intero database.

Esporta database
Esporta database

Sul server remoto accederemo a PHPMyAdmin attraverso il nostro pannello di controllo e useremo la funzione ‘Importa’ dopo esserci posizionati sul nome del database.

Per utilizzare un database MySQL all’interno di un’applicazione PHP può essere usato la nuova estensione chiamata mysqli che sostituisce la vecchia estensione chiamata mysql ormai obsoleta. Vedremo tuttavia più in dettaglio l’utilizzo dell’estensione chiamata PDO (PHP Data Objects) che assicura un livello di protezione decisamente più elevato. PDO è un’estensione che, per la precisione consente la connessione a diversi tipi di database, non solamente MySQL. I vantaggi di questa estensione sono principalmente:

  • Interfaccia object-oriented di semplice uso e indipendente dal tipo di motore database
  • Supporto degli statements PREPARE che consentono una protezione contro gli attacchi di tipo ‘PHP injection’
  • Supporto delle transazioni. (Quando sono richieste modifice al database una dipendente dall’altra; ad esempio per un trasferimento di danaro da un conto ad un altro; se un operazione fallisce deve fallire anche l’altra).

Per utilizzare un database all’interno di un’applicazione PHP occorre eseguire alcuni passi preliminari:

  1. Fornire a PHP:
    • Nome dell’host (generalmente ‘localhost’)
    • Nome del database
    • Username
    • Password
  2. Provvedere alla connessione col database

Mentre la connessione, per mezzo dell’estensione mysqli, avviene con la funzione:

$connection = new mysqli ($db_hostname, $db_username, $db_password, $db_database);

usando la versione ad oggetti, oppure

$connection = mysqli_connect ($db_hostname, $db_username, $db_password, $db_database);

usando la versione procedurale.

Possiamo quindi scrivere un file di configurazione, chiamiamolo config_mysqli.php, con il seguente contenuto:

 

<?php
$mysql_user     = ‘USERNAME’;
$mysql_pass     = ‘PASSWORD’;
$mysql_database        = ‘gestione_ordini’;
$mysql_host     = 'localhost';
// collegamento al database
$sql = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_database) or die('Could not connect: ' . mysql_error());
mysqli_set_charset($sql,"utf8");
?>

Ovviamente al posto di ‘USERNAME’ e ‘PASSWORD’ scriveremo i valori scelti in fase di creazione. A livello locale vanno inseriti username e password di PhpMyAdmin di xampp.

Abbiamo inoltre aggiunto mysqli_set_charset($sql,”utf8″) per impostare il charset del database. In Italia come detto usiamo utf8 per via dei caratteri accentati.

Vediamo ora come si può connettere un database usando l’estensione PDO. Il file di configurazione che nel nostro esempio chiamiamo config_pdo.php sarà:

 

<?php
$mysql_user     = ‘USERNAME’;
$mysql_pass     = ‘PASSWORD’;
$mysql_database        = ‘gestione_ordini’;
$mysql_host     = 'localhost';
$mysql_charset  = 'utf8';
// collegamento al database
$col = "mysql:host=".$mysql_host.";dbname=".$mysql_database.";charset=".$mysql_charset;
try { $db = new PDO($col , $mysql_user, $mysql_pass); }
// blocco catch per la gestione delle eccezioni
catch(PDOException $e) {
   // notifica in caso di errorre
   echo 'Ohps... qualcosa è andato storto: connessione al DB non possibile<br>';
   die();
}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
?>
  • try {} catch permette di mostrare un errore al volo.
  • $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) dà la possibilità di riportare errori, sia in modo normale che tramite le eccezioni.
  • $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false) serve per mettere in off l’opzione ‘prepare emulation’ che è abilitata in MySQL per default, ma che in realtà dovrebbe essere off per poter usare PDO in modo sicuro.

Dalla prossima lezione ci inoltreremo nell’uso delle diverse funzioni di mysql in un programma PHP.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *