2016-11-18 4 views
1

последние несколько дней я пытался подключиться к базе данных MSAccess (2000) с помощью моего приложения PHP (5.4.32) без везения. Я изучил несколько примеров, которые я нашел в Интернете, и хотя, похоже, PHP-скрипт находит базу данных в порядке, она, похоже, перестает выполняться, как только выдается запрос на соединение.Подключение к базе данных MSAccess с PHP

Мой PHP Info можно найти здесь: 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

Просто понял, что вы используете 2k MS Access. Возможно, вам необходимо изменить поставщика на «Provider = Microsoft.Jet.OLEDB.4.0;» – ClintB

+0

Привет Клинт ... спасибо за возвращение. Вот модифицированный код в соответствии с вашим предложением ... к сожалению он возвращается с ошибкой, указывающей, что веб-страница не может обрабатывать этот запрос: close; ?> –

+0

Я должен добавить, что он, похоже, сбой, как только он встречает первую команду $ conn = new COM ('ADODB.Connection'); –