Anzeige

 Debian 9 PHP 7.0 mdb ODBC


hhunderter

Erfahrenes Mitglied
#1
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
#3
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
#4
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.
 
Anzeige

Neue Beiträge

Anzeige