\\ Home Page : Articolo : Stampa
Accedere a database Access da PHP
Di Marco Tenuti (del 06/05/2016 @ 15:29:59, in web, linkato 701 volte)

Accedere ad un database MDB preparato con Access non è affar semplice da PHP. Se avete questa necessità, lo potete sempre fare usando il driver ODBC a 32 bit presente ancora nelle installazioni dei vari Windows Server 2008 R2, 2012 ed annessi, anche se a 64 bit.

Controllo versione PHP

Controllate anzitutto se la vostra versione di PHP può già avere accesso al driver ODBC, semplicemente verificandolo con phpinfo():

phpinfo();

Se lo trovate nella zona dei driver per i database (PDO), siete già a posto e dovreste avere una situazione del genere:

PDO_ODBC

Se non fosse così, aprire il file php.ini per la versione del linguaggio PHP che state usando nel sito. Nel caso dell'esempio indicato qui, è necessario che apriate:

C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP53\php.ini

Editate il file e togliete il commento in prossimità delle estensioni seguenti:

extension=php_pdo.dll extension=php_pdo_mysql.dll

Non è sufficiente salvare il file. Dovete forzare il vostro web server a ripartire, in modo che ricarichi il contenuto della configurazione del PHP. Se avete sul vostro server Plesk, basta riavviare il solo servizio web col comodo pannello di controllo.

Rieseguite nuovamente phpinfo() per vedere che adesso siete nella situazione come le immagini allegate.

Ora potete cominciare ad usare PDO per accedere ai database Access. Eccovi un esempio di codice:



<?

  $dbName = $_SERVER["DOCUMENT_ROOT"] . "\\App_Data\\my_access_database.mdb";

if (!file_exists($dbName)) {
    die("File non trovato.");
}

try
{
  $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
}
catch (PDOException $e)
{
  echo $e->getMessage();
}

$sql = "SELECT * FROM users";
$result = $db->query($sql);
while ($row = $result->fetch())
{
  $idUser = $row["IDUser"];
  $name = $row["Name"];
  $surname = $row["Surname"];
  echo '<p>' . $idUser . ' ' . $name . ' ' . $surname . '</p>' . $eol;
}

?>