Debian 9 PHP 7.0 mdb ODBC


hhunderter

Erfahrenes Mitglied
Guten Morgen,

Wie im Titel schon beschrieben, habe ich einen Debian 9 Server (64Bit) mit PHP 7.0.
Auf einen älteren Server hatte ich, um auf meine mdb-Datein zugreifen zu können, MDBTools benutzt gehabt.
Habe es wie gewohnt über apt-get installiert und in der " /etc/odbcinst.ini"-Datei
Code:
[MDBTools]
Description = MDBTools Driver
Driver       = /usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so
UsageCount  = 1
eingefügt.
Test PHP Datei:
PHP:
<?php
error_reporting(-1);
ini_set('display_errors','On');
ini_set('display_errors',1);
ini_set('display_startup_errors',1);

$query = 'SELECT * FROM `Tabelle1`';
$mdb_file = '/Path/test.mdb';

if (!is_file($mdb_file)){
   exit("File not found");
}
$uname = explode(" ",php_uname());
$os = $uname[0];
switch ($os){
   case 'Windows':
       echo "Windows\r\n<br>\r\n<br>\r\n";
       $driver = '{Microsoft Access Driver (*.mdb)}';
       break;
   case 'Linux':
       echo "Linux\r\n<br>\r\n<br>\r\n";
       $driver = 'MDBTools';
       break;
   default:
       exit("Don't know about this OS");
}

$dataSourceName = "odbc:Driver=$driver;DBQ=$mdb_file;";
try{
   $pdo = new PDO($dataSourceName);
}catch(PDOException $e){
   echo "Error: ".$e;
}
if (isset($pdo) and is_object($pdo)){
   echo "Data:\r\n<br>\r\n<br>\r\n";

   $sth = $pdo->prepare($query);
   $sth -> execute();
   foreach($sth as $row) {
       print_r(array_value($row));
       echo "\r\n<br>\r\n";
   }
}


echo "\r\n<br>\r\n<br>\r\n";
print_r (PDO::getAvailableDrivers());

?>
Apache neu gestartet und Output:
Code:
Linux

Data:



Array ( [0] => mysql [1] => odbc )
Was hab ich vergessen? ;)
 

hhunderter

Erfahrenes Mitglied
Danke erstmal für die Antwort, aber daran lag es auch nicht.
geänderter Code:
PHP:
<?php
...
    $sth = $pdo->prepare($query);
   var_dump($sth);
   $sth->execute();
   var_dump($sth);
   for($i=0; $row = $sth->fetch(PDO::FETCH_ASSOC); $i++){
       print_r(array_value($row));
       echo "\r\n<br>\r\n";
   }
....
?>
Ausgabe:
Code:
Linux

Data:

object(PDOStatement)#2 (1) { ["queryString"]=> string(26) "SELECT * FROM `Tabelle1`" } object(PDOStatement)#2 (1) { ["queryString"]=> string(26) "SELECT * FROM `Tabelle1`" }

Array ( [0] => mysql [1] => odbc )
Kann es sein das Debian 9 mit PHP 7.0 diesen Treiber (MDBTools) nicht mehr unterstützt?
Ich hatte schon bei der installation teilweise Probleme zu Installieren das ich die Pakete etwas umbenennen muste.
 

hhunderter

Erfahrenes Mitglied
Durch langes herumknobeln habe ich es zum laufen gebracht.
Ich habe den MDBTools-Source Code herunter geladen ,Compiliert, die Pfad angeben geändert und danach ging es komischerweise.