PHP и MS Access

Как связать скрипт PHP с файлом MS Access (.mdb) ?

Я попытался включить следующий код PHP :

 $db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb'; $cfg_dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $db_path; $odbcconnect = odbc_connect($cfg_dsn, '', ''); 

Но это не удалось, и я получил следующее сообщение об ошибке:

  Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\web\WebUpdate\index.php on line 41 

Вот пример подключения и простой выбор …

 <?php $db_conn = new COM("ADODB.Connection"); $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("./Northwind.mdb").";"; $db_conn->open($connstr); $rS = $db_conn->execute("SELECT * FROM Employees"); $f1 = $rS->Fields(0); $f2 = $rS->Fields(1); while (!$rS->EOF) { print $f1->value." ".$f2->value."<br />\n"; $rS->MoveNext(); } $rS->Close(); $db_conn->Close(); ?> 

В имени файла я смотрю '\ WebUpdate \' – похоже, что у вас есть одна обратная косая черта в начале в два в конце. Возможно, вам не хватает обратной косой черты в начале?

 $db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb'; 

замените обратную косую черту косой чертой. '/ WebUpdate /'.

это похоже на проблему с разделителями путей. ISTR, что вам нужно пройти обратную косую черту, а не косую черту

Для меня работает следующее: с файлом MDB в веб-корне, называемом db4

     $ defdir = str_replace ("/", "\\", $ _SERVER ["DOCUMENT_ROOT"]);
     $ dbq = $ defdir.  "\\ db4.mdb";
 if (! file_exists ($ dbq)) {die («Файл базы данных $ dbq не существует»);  }

     $ dsn = "DRIVER = Microsoft Access Driver (* .mdb); UID = admin; UserCommitSync = Yes; Threads = 3; SafeTransactions = 0; PageTimeout = 5; MaxScanRows = 8; MaxBufferSize = 2048; FIL = MS Access; DriverId = 25; DefaultDir = $ defdir; DBQ = $ DBQ ";
     $ odbc_conn = odbc_connect ($ dsn, "", "")
         или умереть («Не удалось подключиться к базе данных Access $ dsn»);

Я не уверен, что это нарушение передового опыта или безопасности, но я хотел бы отбросить это предложение:

настройте соединение ODBC и включите пароль базы данных в настройках предварительной настройки odbc. дайте odbc соединить имя DSN, а затем сохраните.

в вашем коде просто настройте соединение, например:

 try { $conn = @odbc_connect("DSNName", "", "", "SQL_CUR_USE_ODBC"); // un and pw parameters are passed as empty strings since the DSN // has knowledge of the password already. // 4th parameter is optional $exec = @odbc_exec($conn, $insert) or die ("exec error"); echo "success!"; } catch (Exception $e) { echo $e->getMessage(); } // end try catch