Login
Libri
Home

Connettere il proprio Database

Share

Ci sono due vie per connettere un Database:

Connessione Automatica

L' "auto connessione" caricherà ed istanzierà la classe database ogni volta che una pagina verrà richiamata. Per abilitare l'"auto connession" basta aggiungere la parola database alla libreria dell'array, come indicato nel file seguente:


application/config/autoload.php

Connessione Manuale

Se la connessione al database è richiesta solo da alcune pagine è possibile connettere il proprio database aggiungendo la seguente riga di codice all'interno della funzione che la richiede, o nel costruttore della classe affinché sia disponibile alla classe intera.


$this->load->database();

Se la funzione precedente non contiene nessuna informazione come primo parametro, di default si collegherà al primo gruppo specificato nel proprio file di configurazione del database. Per la maggior parte delle persone questo è ll metodo preferito ed adottato.

Parametri disponibili

  1. Valori di connessione al database, passati attraverso o un array oppure una stringa DSN.
  2. TRUE/FALSE (booleano). Restituisce l'ID della connessione (vedere successivamente la sezione Connettersi a Più Database).
  3. TRUE/FALSE (booleano). Che abilità la classe Active Record. Di default impostato su TRUE.

Connessione Manuale ad un Database

Il primo parametro di questa funzione può opzionalmente essere usato per specifcare un particolare gruppo database del proprio file di configurazione, oppure è possibile passare i valori di connessione qual'ora il database non fosse presente nel file di configurazione. Per esempio:

Per scegliere uno specifico gruppo dal proprio file di configurazione si procederà così:


$this->load->database('group_name');

Dove group_name è il nome della gruppo di connessione dal file di configurazione.

Per connettersi manualmente ad una databse è sufficiente passare un array di valori:


$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";

$this->load->database($config);

Per la spiegazione sul significato di ciascun valore si rimanda alla pagina di configurazione.

Oppure è possibile passare direttamente il valore come Data Source Name. Il DSNs deve rispettare questa struttura:


$dsn = 'dbdriver://username:password@hostname/database';

$this->load->database($dsn);

Aggiungendo i parametri come query string è possibile sovrascrivere valori di configurazione quando ci si connette con una stringa DSN.


$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';

$this->load->database($dsn);

Connessione a Più Databases

Se occorre connettersi a più di un database simultaneamente, è possibile farlo nel seguete modo:


$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE); 

Nota: Cambirare le parole "group_one" e "group_two" con gli specifici name delle connessioni (oppure passare i valori di connessione come indicato precedentemente).

Configurando il secondo parametro a TRUE(booleano) la funzione restituirà l'oggetto database.

Quando ci si collega in questo modo, si potrà utilizzare il nome dell'oggetto database per inviare comandi invece che utilizzare la notazione standard utilizzata in questa guida. In altre parole, invece di inviare comandi con:

$this->db->query();
$this->db->result();
etc...

Si potà utilizzare la seguente notazione:

$DB1->query();
$DB1->result();
etc...

Riconnettere / Mantenere Attiva una Connessione

Per evitare che la connessione al server del database vada in timeout, a causa di operzione complesse in PHP (elaborare una immagine, per esempio), si potrebbe prendere in considerazione la possibilità di pingare il server usando il methodo reconnect() prima di inviare ulteriori queries, il quale permetterà di mantenere la connessione attiva, oppure provvederà a ristabilirla.


$this->db->reconnect();

Chiusura Manuale della connessione

Nonostante CodeIgniter si prenda cura di chiudere la connessione al databse, dà anche la possibilità di fare tale operazione manualmente grazie al seguente comando.


$this->db->close();

Ultimo aggiornamento ( Mercoledì 09 Marzo 2011 05:33 )

Libri