0

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
4

5 に答える 5

5

これは、接続と単純な選択のサンプルです...

<?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();
?> 
于 2008-09-22T14:02:12.917 に答える
0

パスセパレーターに問題があるようです。スラッシュではなくバックスラッシュを渡す必要がある ISTR

以下は私にとってはうまくいきます-db4と呼ばれるwebrootのMDBファイルを使用します

    $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,"","")
        or die("Access データベース $dsn に接続できませんでした");
于 2008-09-22T14:09:42.617 に答える
0

ファイル名で「\WebUpdate\」を見ています。最初にバックスラッシュが 1 つ、最後にバックスラッシュが 2 つあるようです。先頭にバックスラッシュがありませんか?

于 2008-09-22T14:05:18.150 に答える
0
$db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb';

バックスラッシュをスラッシュに置き換えます。'/WebUpdate/' .

于 2008-09-22T14:06:00.473 に答える