PHP и MS Access - PullRequest
       75

PHP и MS Access

0 голосов
/ 22 сентября 2008

Как мы можем подключить 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

Ответы [ 5 ]

5 голосов
/ 22 сентября 2008

Вот пример подключения и простого выбора ...

<?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();
?> 
0 голосов
/ 26 февраля 2009

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

установить соединение ODBC и включить пароль базы данных в настройках odbc advance. дайте odbc conn имя 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
0 голосов
/ 22 сентября 2008

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

У меня работает следующее - с файлом MDB в корне с именем db4

    $defdir = str_replace("/", "\\", $_SERVER["DOCUMENT_ROOT"]);
    $dbq    =    $defdir . "\\db4.mdb";
if    (!file_exists($dbq)) { die("Database file $dbq does not exist"); }

    $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,"","")
        or die("Could not connect to Access database $dsn");
0 голосов
/ 22 сентября 2008
$db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb';

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

0 голосов
/ 22 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...