2012-04-10 89 views
1

任何人都可以告訴我,如果在使用PHP的Ubuntu上使用unixODBC驅動程序有限的SQL支持嗎?我已經在Ubuntu 11.10上設置了一個基本燈服務器,並且我試圖查詢一個Access數據庫。我已經安裝了php5-odbc和MDB工具。這裏是一些示例代碼:使用ODBC與MDBTools驅動程序訪問Access數據庫的LAMP(PHP)

<?php 

$conn = odbc_connect('logindb','',''); 

if (!$conn) { 
    echo "failed"; 
} 

$sql = "SELECT * FROM class"; 
//$sql = "SELECT class.desc, event_classes.event_class_id FROM class inner join 
//event_classes on class.class_id = event_classes.class_id"; 

$rs = odbc_exec($conn, $sql); 

while ($d = odbc_fetch_array($rs)) { 
    var_dump($d); 
} 

?> 

第一個查詢,簡單的選擇,工作得很好。但是,當試圖執行聯接(第二個註釋的查詢)時,我收到0條記錄。我能夠在Access中的SQL編輯器中成功運行SQL,所以我知道我的SQL是正確的,並且連接在那裏工作。有沒有人有這方面的經驗?我知道Linux並沒有與專有的微軟產品兼容,但不幸的是我必須在Ubuntu上閱讀Access數據庫。任何幫助是極大的讚賞。

回答

3

自2004年以來,sourceforge上的mdbtools並未更新。我看到有人將它放在github上,似乎做了一些小改動。其中的SQL支持從來沒有那麼好,它只是只讀的,我從經驗中知道在DBD :: ODBC下使用Perl進行嘗試時,很多測試都失敗了。我認爲你將會很難用它。

還有其他更可靠的方式從Linux訪問MS Access數據庫,但他們都是我的知識商業。從Linux訪問MS Access數據庫我知道以下內容:

Easysoft有一個ODBC-ODBC Bridge(可用於使用MS Access ODBC驅動程序訪問Windows機器上的MS Access數據庫),但它要求在Windows機器上安裝服務。 Easysoft也有一個MS Access ODBC驅動程序,可以直接訪問mdb/accdb文件,只要它在Linux中可見即可。

還有來自Openlink的其他商用ODBC橋接器。

0

如果任何人碰巧正在尋找hacky解決方案,我最終使用mdb-tools將訪問數據庫轉換爲csv文件(每個表1個),然後通過執行「手動」連接的csv進行迭代。不是最好的解決方案,但它最終只適用於相當小的表格。希望能幫助到你!

相關問題