【问题标题】:Error in connecting MS-Access database to PHP Server DSN-less将 MS-Access 数据库连接到无 DSN 的 PHP Server 时出错
【发布时间】:2014-10-15 16:14:40
【问题描述】:

我是 PHP 新手,也是 Ms-access 数据库的新手。我正在尝试将 php 服务器连接到 ms 访问数据库 dsnless,因为我必须把它交给我的朋友。我的 php 文件和 ms 数据库文件都在同一个目录中,它们都将只保留在 localhost 上。我无法理解错误。

我有 64 位 wamp 版本 2.4/Apache 版本:2.4.4/PHP 版本:5.4.16/ 64 位 windows 7 我还从官方网站安装了 Microsoft Access Database Engine 2010 Redistributable。

这是我的 php 代码

<?php
echo (8 * PHP_INT_SIZE) . "-bit<br/>";
$user = "";
$password = "";
$mdbFilename= "C:\wamp\www\test\testdb.accdb";

$conn=$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $user, $password);              ////<----line 10

if (!$conn) {
  exit("Connection Failed: " . $conn);
}

$sql="SELECT * FROM testdb";
$rs=odbc_exec($conn,$sql);
if (!$rs) {
  exit("Error in SQL");
}

while (odbc_fetch_row($rs))
{
    $json_output[] = odbc_result($rs, "test");
    print(json_encode($json_output));

}
odbc_close($conn);
?>  

这是我的错误

Warning: odbc_connect(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Not a valid file name., SQL state S1000 in SQLConnect in C:\wamp\www\test\working.php on line 10

【问题讨论】:

  • 您是否尝试过将文件规范中的“\”加倍。
  • 您是否还在运行 32 位 PHP(如您之前的问题 here 中所述)?
  • @GordThompson 是的,我仍在运行 32 位版本,因为 64 位版本仍处于试验阶段,尚未准备好用于商业用途。
  • @bohica 是的,我做到了,这就是我的路径 C:\\wamp\www\test\testdb.accdb 但它没有用
  • 你上面的例子只加倍了第一个 \ 而不是所有的反斜杠。

标签: php ms-access odbc


【解决方案1】:

这是我用来连接 Ms-Access 的:

<?php
    $conn = new COM("ADODB.Connection");
    $dns = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath("./youraccessdb.mdb").";";
    $conn->open($dns);
    $rs = $conn->execute("SELECT * FROM table");
    $field =  $rs->Fields(0);

    while (!$rs->EOF) {
      print $f1->value . "\n";
      $rs->MoveNext();
    }
    $rs->Close();
    $conn->Close();
?>

希望对您有所帮助。

【讨论】:

  • 我收到此错误致命错误:第 4 行的 C:\wamp\www\test\test3.php 中未找到 Class 'COM'
  • 您必须将extension=php_com_dotnet.dll 添加到您的php.ini 以加载com/dotnet 模块。
  • 我这样做了,现在我收到此错误 致命错误:未捕获的异常 'com_exception' 带有消息 '来源: Microsoft OLE DB Provider for ODBC Drivers
    描述: 操作被取消。'在第 6 行的 C:\wamp\www\test\test3.php 中
  • 我收到两个错误,这是第二个错误 com_exception:来源: Microsoft OLE DB Provider for ODBC Drivers
    描述: 操作取消了。在第 6 行的 C:\wamp\www\test\test3.php 中
  • 这是第 6 行 $conn->open($dns);
猜你喜欢
  • 2012-12-21
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2015-08-02
  • 2018-01-30
  • 1970-01-01
相关资源
最近更新 更多