【问题标题】:PHP and MS AccessPHP 和 MS 访问
【发布时间】:2008-09-22 13:58:50
【问题描述】:

我们如何将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

【问题讨论】:

  • 这是:'\WebUpdate\\' 错字吗?您正在转义一个斜线,而不是另一个。

标签: php ms-access


【解决方案1】:

这是一个连接示例和一个简单的选择...

<?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();
?> 

【讨论】:

    【解决方案2】:

    在文件名中,我正在查看 '\WebUpdate\' - 看起来您的开头有一个反斜杠,结尾有两个。您是否可能在开头缺少反斜杠?

    【讨论】:

      【解决方案3】:
      $db_path = $_SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb';
      

      用斜杠替换反斜杠 use . '/WebUpdate/' .

      【讨论】:

        【解决方案4】:

        看起来路径分隔符有问题。 ISTR 你必须传递反斜杠而不是正斜杠

        以下内容对我有用 - 在 webroot 中有一个名为 db4 的 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("Could not connect to Access database $dsn");

        【讨论】:

          【解决方案5】:

          我不确定这是否违反了最佳实践或安全性,但我想放弃这个建议:

          设置 ODBC 连接并在 odbc 高级设置中包含数据库的密码。 给 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-14
            • 2010-11-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多