Brevi segnalazioni prima di procedere
- nel corso di questa trattazione, le funzioni PHP non verranno precedute dall'operatore di silence (
@
- tutto il codice utilizzato per questa guida può essere scaricato
- le versioni dei server utilizzate nella guida sono le seguenti: PHP versione 5.2.10, MySQL versione 4.1.22-standard, Apache versione 2.2.11 (Linux).
- hostname
- username
- password
Connessione PHP MySQL
Perché un'applicazione realizzata in PHP possa utilizzare le informazioni contenute all'interno di un database questa deve poter avere accesso ad esse, a questo scopo l'applicazione dovrà poter comunicare con l'RDBMS che gestisce la base di dati, ciò è possibile attraverso un procedura iniziale e necessaria chiamata "connessione"; per evitare ambiguità è bene chiarire che la procedura di connessione avviene tra lo script e il programma che gestisce la base di dati e non tra lo script e la base di dati stessa; una volta terminata la procedura necessaria per la connessione all'RDBMS, sarà possibile avviarne una seconda chiamata di "selezione" del database da utilizzare.
Parametri di connessione
Per aprire una connessione da un'applicazione in PHP al database manager MySQL, si utilizza una funzione nativa del linguaggio chiamata mysql_connect()
, essa restituisce un identificativo di connessione MySQL in caso di successo, diversamente restituisce FALSE;
questa funzione richiede il passaggio di tre parametri che sono argomenti della funzione:
I tre parametri da passare a mysql_connect()
possono essere espressi sia sotto forma di variabili che sotto forma di valori puri, l'ordine da rispettare è quello proposto in elenco, per cui sarà possibile utilizzare sia una forma del genere:
// hostname
$nomehost = "localhost";
// utente per la connessione a MySQL
$nomeuser = "username";
// password per l'autenticazione dell'utente
$password = "password";
// connessione tramite mysql_connect()
$connessione = mysql_connect($host,$user,$pass);
che la forma seguente
// connessione a MySQL tramite mysql_connect()
$connessione = mysql_connect("localhost","username","password");
Un buon metodo per permettere ad un'applicazione realizzata in PHP di connettersi a MySQL è quello di utilizzare una classe:
<?php
class MysqlClass
{
// parametri per la connessione al database
private $nomehost = "localhost";
private $nomeuser = "username";
private $password = "password";
// controllo sulle connessioni attive
private $attiva = false;
// funzione per la connessione a MySQL
public function connetti()
{
if(!$this->attiva)
{
$connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password);
}else{
return true;
}
}
}
?>
Programmazione a oggetti
Per quanto la programmazione per oggetti possa presentare qualche complessità in più rispetto a quella che segue il paradigma procedurale, il meccanismo utilizzato dalla classe appena proposta risulta abbastanza semplice:
- i parametri per la connessione al DBMS vengono associati al modificatore "private" che li renderà disponibili soltanto all'interno della classe di appartenenza, secondo le regole di visibilità introdotte dal paradigma OOP nelle ultime versioni di PHP;
- viene effettuato un controllo sull'eventuale esistenza di connessioni attive;
- viene definita una funzione personalizzata (denominata
connetti()
public - nel caso in cui non sia già attiva alcuna connessione, i parametri necessari ad essa verranno passati alla funzione primitiva
mysql_connect()
Questa classe, che verrà implementata con nuove funzionalità nel corso della trattazione, potrà essere salvata in un file chiamato ad esempio funzioni_mysql.php (o se si preferisce il classico config.php); essa potrà essere richiamata in qualsiasi momento da qualsiasi file con una semplice inclusione; perché la classe possa essere utilizzata dovrà essere istanziata, nello stesso modo sarà possibile utilizzare la funzione per la connessione a MySQL tramite una semplice chiamata:
// inclusione del file contenente la classe
include "funzioni_mysql.php"
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();