Collegarsi ad Access con PHP

Nella vita di tutti i giorni qualche volta capita (purtroppo) che i dati che ci interessano siano conservati in un db di Microsoft Access e ci sia richiesto di leggerli e manipolarli dal web.
Il PHP come al solito ci sorprende e scopriamo che accedere a quei dati non è poi la morte anzi, collegarsi con PHP ad un db Access sotto windows è banale.

Qui sotto riporto un esempio minimalista del codice necessario ad accedere ad un DB Access tramite gli ODBC e un DSN (si DSN: Data Source Name).

Lo script vuole essere generico e quindi è una specie di piccolo client ODBC a cui potrete sottomettere le vostre query e lui le eseguira sul connettore ODBC e di conseguenza su un qualunque DB dietro al DSN.
Lo script come output restituira a video un file CSV più qualche informazione sulla connessione.

Per funzionare il nostro piccolo script PHP necessita di un DSN di sistema (ripeto di sistema perchè un DSN per utente non funziona).
Se possedete Vista 64 vi consiglio di leggere http://uccio.org/node/152 per risolvere il problema ODBC Access

Ecco quindi il piccolo Client con i commenti.

  1. header("Content-type:text/plain");
  2.  
  3. // Configura questi 3 campi
  4.  
  5. $dsn = 'connector'; // nome del DSN ODBC
  6. $user = 'user';
  7. $password = 'password';
  8.  
  9.  
  10. // ----- Connesione al DB -----
  11. print "Connessione su '$dsn' come '$user' ";
  12. $conn = @odbc_connect ($dsn ,$user , $password);
  13. if(!$conn){
  14.   die("ERRORE: " .odbc_errormsg());
  15. }
  16. print "OK\n";
  17.  
  18.  
  19. // ----- Lavoriamo sul DB -----
  20.  
  21. // La query la leggiamo dall'interfaccia
  22. $sql = $_REQUEST['sql'];
  23. print "Esecuzione della query:\n\n$sql\n\n";
  24. if (!$children = @odbc_exec($conn, $sql)){
  25.   print "ERRORE: " . odbc_errormsg($conn) ."\n";
  26. }
  27. else{
  28.   print "\n\n";
  29.   while ($child = odbc_fetch_array($children)) {
  30.     //Stampiamo una riga per volta con i separatori
  31.     print "'" . implode("','" , $child) ."'\n";
  32.   }
  33. }
  34.  
  35. // ----- Chiudiamo il DB ------
  36. odbc_close($conn);

Share this post