9

MDBToolsドライバーを使用してAccessデータベースから読み取り、Ubuntu11.10でを実行しようとしていますodbc_connect。でDSNセットアップを使用すると、正常に機能します/etc/odbc.ini

以下はその内容です/etc/odbc.ini

[logindb]
Description = Microsoft Access Try DB
Driver = MDBToolsODBC
Database = /home/folder1/TestDb.mdb
Servername = localhost

odbc.ini参照のDriver属性MDBToolsODBCなので、ここに私のodbcセットアップがあります/etc/odbcinst.ini

[MDBToolsODBC]
Description = MDB Tools ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage =
CPTimeout =
CPReuse =

私の問題は、を使用するとき$conn = odbc_connect('logindb','','');に、データベースの場所にハードコードされた値を使用する必要があることです。理想的にはodbc_connect、DSNなしの接続を使用する最初のパラメーターを指定して、データベースファイルを変数(さまざまなデータベースから読み取る)にできるようにします。何かのようなもの:

if ($cond1) {
  $db = "/home/folder1/TestDb.mdb";
} else {
  $db = "/home/folder1/TestDb2.mdb";
}

$conn = odbc_connect("odbc:Driver={MDBToolsODBC};Dbq=$db",'','');

odbc:プレフィックスなしでも試しましたが、機能しませんでした。DSNの指定が機能する理由を誰かに教えてもらえますが、同じ属性のように見えるものを使用してその場で指定しようとすると、機能しませんか?これは、DSNなしの接続の最初のパラメーターのパラメーターと内容に関係していると思います。いつものように、どんな助けでも大歓迎です。

4

3 に答える 3

2

0.7.1 でサポートされています。github から入手できます。

https://github.com/brianb/mdbtools

接続文字列に関しては、これは私にとってはうまくいきます:

"Driver=Microsoft Access Driver (*.mdb);DBQ=///file.mdb;UID=;PWD=;"
于 2014-04-29T19:49:00.503 に答える
0
$driver = "MDBTools"; -- Driver name from /etc/odbcinst.ini
$dbName = "/path/to/database.mdb"; -- Full path of your MDB file
$db = new PDO("odbc:Driver=$driver;DBQ=$dbName", "", "");
于 2016-12-06T21:00:05.290 に答える