我有一個Microsoft Access數據庫,並且我試圖使用PHP查詢表,並輸出有效的JSON。我有一個MSSQL數據庫的等效代碼,我試圖讓我的代碼做同樣的事情,但只是爲Access數據庫。使用PHP查詢MDB文件並返回JSON
這裏是MSSQL代碼
$myServer = "server";
$myDB = "db";
$conn = sqlsrv_connect ($myServer, array('Database'=>$myDB));
$sql = "SELECT *
FROM db.dbo.table";
$data = sqlsrv_query ($conn, $sql);
$result = array();
do {
while ($row = sqlsrv_fetch_array ($data, SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
} while (sqlsrv_next_result($data));
$json = json_encode ($result);
sqlsrv_free_stmt ($data);
sqlsrv_close ($conn);
這裏是我試過的MDB文件
$dbName = "/filename.mdb";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$db = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", $user, $password);
$sql = "SELECT *
FROM cemetery";
$data = $db->query($sql); // I'm getting an error here
$result = array();
// Not sure what do do for this part...
do {
while ($row = fetch($data, SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
} while (sqlsrv_next_result($data));
$json = json_encode ($result);
我有種遵循了這一嘗試連接到數據庫:http://phpmaster.com/using-an-access-database-with-php/
目前這給我一個500內部服務器錯誤。我期待一個字符串,如本應保存在變量$json
[
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
"col1":"col value",
"col2":"col value",
"col3":"col value",
},
{
etc...
}
]
有人可以幫助我端口MSSQL代碼我上面,所以我可以用一個MDB數據庫使用它呢?謝謝您的幫助!
編輯:我註釋掉線一個接一個,而它拋出我的500錯誤在該行$data = $db->query($sql);
。我查看了錯誤日誌,並收到錯誤Call to a member function query() on a non-object
。我已經在我的php.ini文件中取消註釋extension=php_pdo_odbc.dll
。任何人都知道問題可能是什麼?
學會做回聲使用調試,並找到你的錯誤的地方。一個我已經發現:'while($ row = fetch($ data,SQLSRV_FETCH_ASSOC))'應該是'while($ row = $ data-> fetch(PDO :: FETCH_ASSOC))''。 'do {..} while'需要被移除。只要看看你發佈的例子,它的全部那裏 – x4rf41
請更新你的問題,告訴我們你期望發生什麼,現在發生了什麼,以及你試圖解決它。考慮包括您收到的任何錯誤消息,以及您用來幫助解決問題以及他們未能如何回答您的問題的資源說明。 –
當我運行這個時,它給了我一個500內部服務器錯誤,所以我看不到任何回顯的字符串(即使進行了您建議的更改後,我也會得到此錯誤)。我將MDB文件放在與我的網站相同的目錄中,現在也僅用於測試。我已經更新了這個問題,喬治! – TFischer