[PHP] Utilizzare la classe MDB2 con o senza aver installato PEAR

Supponendo che non possiate (o vogliate) installare Pear per utilizzare un suo solo package, è possibile selezionare soltanto i files di nostro interesse per l'utilizzo del suddetto package.

In questo caso vogliamo utilizzare MDB2:

PEAR MDB2 is a merge of the PEAR DB and Metabase php database abstraction layers. It provides a common API for all support RDBMS. Actually MDB2 is the second major version of MDB. The main differences between the new MDB2 and the old MDB version is that the API has been drastically refactored to clean up the API and improve performance.

Grazie a questa classe insomma, possiamo imparare solo alcune funzioni per le solite operazioni CRUD a prescindere dal DBMS utilizzato (a patto di aver installato i driver relativi), senza quindi doverci ricordare, ad esempio, come si effettua una connessione a MySQL piuttosto che a PostgreSQL: ci sarà un modo univoco specificando solamente il nome del DBMS a cui ci stiamo rivolgendo.

Inoltre è possibile definire lo schema di un database in formato XML in maniera tale da esser portabile per vari DBMS. Tale schema viene poi parsato da uno script PHP che si preoccuperà di creare database e tabelle, popolandole con i dati di nostro interesse.

Installazione tradizionale con Pear

Nel caso abbiate già installato Pear sul vostro computer, sarà sufficiente digitare i seguenti comandi da shell:

$ pear install MDB2
$ pear install MDB2#mysql
$ pear install MDB2#pgsql
...

Il primo comando installerà il package MDB2, mentre i seguenti installeranno i driver specifici per il vostro DBMS di riferimento.

Installazione manuale senza Pear

Se vogliamo utilizzare MDB2 senza installare tutto il sistema Pear, sarà sufficiente:

  • Creare una directory contenitore come riferimento, ad esempio TEST;
  • Scaricare il package PEAR (vers. stabile 1.7.1): una volta scaricato l'archivio, estrarre solamente il file PEAR.php e porlo in TEST;
  • Scaricare il package MDB2: all'interno dell'archivio troverete una directory MDB2-* (dove * indica la versione, quella stabile è la 2.4.1), entrate in questa directory ed estraete il file MDB2.php e TUTTA la directory MDB2 in TEST;
  • Scaricate i driver di vostro interesse: nel caso di MySQL, scaricate MDB2_Driver_mysql (la cui versione stabile è la 1.4.1). A questo punto entrate nella directory MDB2_Driver_mysql-* (dove * indica la versione), poi estraete in TEST/MDB2/Driver il file MDB2/Driver/mysql.php e poi estraete i singoli file mysql.php nelle directory  Datatype, Function, ecc  presenti nell'archivio in quelle rispettive di TEST/MDB2/Driver.

Riassumendo avremo la seguente gerarchia finale di files in TEST:

  1. TEST (dir)
    1. MDB2 (dir)
      1. Driver (dir)
        1. Datatype (dir)
          1. Common.php
          2. mysql.php
        2. Function (dir)
          1. Common.php
          2. mysql.php
        3. Manager (dir)
          1. Common.php
          2. mysql.php
        4. Native (dir)
          1. Common.php
          2. mysql.php
        5. Reverse (dir)
          1. Common.php
          2. mysql.php
        6. mysql.php
      2. Date.php
      3. Extended.php
      4. Iterator.php
      5. LOB.php
    2. MDB2.php
    3. PEAR.php
    4. file_di_test.php

file_di_test.php sarà il nostro file in cui testeremo l'efficacia delle classi (vedi sezione seguente). Nel caso in futuro voleste installare altri driver, sarà necessario porre il la classe principale sotto Driver e poi mettere le singole classi dedicate nelle directory di Driver (dove ci sono i vari mysql.php).

Esempio: file_di_test.php

Ecco il contenuto di questo file per testare una query su un database di MySQL denominato "sito" (e nello specifico si fa una select sulla tabella voto, la quale contiene un campo di tipo text con dei nomi di persona):

<?php

require_once 'MDB2.php';
// dbms://user:pass@host/db
$dsn = 'mysql://root:root@localhost/sito';
//$options = array ('persistent' => true);
$mdb2 =& MDB2::factory($dsn); //, $options);
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);

// execute a query

$sql = 'select distinct autore from voto';
$result = $mdb2->query($sql);


echo "<h2>Lista dei nomi nella tabella "voto\"</h2>";
echo "<ul>";


/* Every time you call fetchRow(), it will move to the next record and will give you a reference to the data contained in it. */

while ($row = $result->fetchRow()) {
echo "<li>".$row['autore']."</li>"; 
}

echo "<ul>";


// release resources

$result->free();

echo '<hr />Affected rows: ';

echo $mdb2->exec($sql);


// close connection*/
$mdb2->disconnect();
?>

0 comments:

Byte Strike Blog - Designed by Posicionamiento Web | Bloggerized by GosuBlogger