2016-11-18 386 views
1

連續幾天我一直在嘗試使用我的PHP應用程序(5.4.32)沒有運氣連接到MSAccess數據庫(2000年)。 我已經探索了我在網上找到的幾個例子,雖然它會出現PHP腳本正在查找數據庫OK,但似乎在發出連接請求後立即停止執行。連接到MSAccess數據庫與PHP

我的PHP的信息可以在這裏找到:http://www.ve3gop.com/php_info.php

關鍵組件(PDO,PDO_MYSQL和PDO_ODBC)似乎被啓用。

我試過3個例子: 例1發送連接請求後停止。

<?php 
$dbName = $_SERVER["SYSTEM_ROOT"] . "HockeyPool.mdb"; 
if (!file_exists($dbName)) { 
    die("Could not find database file."); 
} 
else 
{ 
echo "Using " . $dbName . " database."; 
} 

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;"); 

echo "Connection Request Sent"; 

$sql = "SELECT * FROM PoolTeams"; 
$result = $db->query($sql); 
while ($row = $result->fetch()) { 
    $teamIdent  = $row["ID"]; 
    $teamName   = $row["TeamName"]; 
} 
?> 

例2同樣的事情...在發送請求後停止。

<?php 
$bits = 8 * PHP_INT_SIZE; 
echo "(Info: This script is running as $bits-bit.)\r\n\r\n"; 
$dbName = "HockeyPool.mdb"; 

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=HockeyPool.mdb"); 

echo "Request Sent"; 
$dbh = new PDO($connStr); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = "SELECT * FROM PoolTeams"; 
$sth = $dbh->prepare($sql); 
$sth->execute(); 

while ($row = $sth->fetch()) { 
    echo $row['PoolTeamName'] . "\r\n"; 
} 
?> 

最後,例3根本不起作用。

<?php 

$conn = new COM('ADODB.Connection'); 
$dbName = $_SERVER["SERVER_ROOT"] . "HockeyPool.mdb"; 
echo $dbName; 

if (!file_exists($dbName)) { 
    die("Could not find database file."); 
} 

conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName"); 

echo $dbName; 
$conn->close; 

?> 

任何人都可以請指點我在正確的方向讓我的項目離開地面?我將不勝感激。

謝謝

回答

0

試試這個:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<Path>;" 

如果你有那麼一個密碼試試這個到底

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<Path>;Jet OLEDB:Database Password=<Pass>;" 
+0

只要您使用的MS Access 2K實現。您可能需要將提供者更改爲「Provider = Microsoft.Jet.OLEDB.4.0;」 – ClintB

+0

嗨克林特...謝謝你回來。以下是根據您的建議修改的代碼...不幸的是,它返回一個錯誤,指示網頁無法處理此請求:<?php set conn = Server.CreateObject(「ADODB.Connection」); conn。「Provider = Microsoft.Jet.OLEDB.4.0;」; conn.Open「HockeyPool.mdb」; $ conn-> close; ?> –

+0

我應該補充說,它遇到第一條指令就會崩潰$ conn = new COM('ADODB.Connection'); –