无法通过 PHP 连接到 Access 数据库

Posted

技术标签:

【中文标题】无法通过 PHP 连接到 Access 数据库【英文标题】:Can't connect through PHP to an Access Database 【发布时间】:2013-02-05 16:52:12 【问题描述】:

我必须通过 php 与 Access 数据库建立连接,但每次尝试时都会收到此错误:

致命错误:未捕获的异常“com_exception”

带消息:

'来源: Microsoft OLE DB 服务组件描述: Das Format der Initialisierungszeichenfolge entspricht nicht den OLE DB-Angaben。在 E:\path\to\phpfile.php:93 堆栈跟踪:#0 E:\path\to\phpfile.php(93): com->Open('DRIVER=Microso...') #1 main throw in

德语文本的意思是“初始化字符串的格式在 OLE DB 语句中并不常见。

我的连接代码看起来像

$db = 'DRIVER=Microsoft Access Driver (*.mdb); DBQ=" & Server.MapPath("\") & ("\\db\\db.mdb") & ";"';
$conn = new COM("ADODB.Connection"); 
$conn->Open($db);

我不知道出了什么问题。在纯 ASP 中可以正常工作,但在 PHP 中不行。

提前致谢

【问题讨论】:

也许考虑用这个代替 COM? php.net/manual/en/function.odbc-connect.php - 该页面上还有一些不错的通用 cmets。连接到 Access。 【参考方案1】:

不要使用“ADODB.Connection”模块,而是使用 PDO,因为它是目前最好的选择并且是最佳实践,这里是文档:http://php.net/manual/en/book.pdo.php

但如果 PDO 不适合您,那么请参阅 ODBC(推荐 PDO),它是一个原生 PHP 模块。这是文档:http://php.net/manual/en/book.uodbc.php 要开始连接,您可以这样做:$connection = odbc_connect("Driver=Microsoft Access Driver (*.mdb);Dbq=$mdbFilename", $user, $password);

【讨论】:

感谢您的回复,但它不起作用。但代码看起来像$dbpath = 'Server.MapPath("//") & ("//db//seilbahn.mdb")'; $db = odbc_connect("DRIVER=Microsoft Access Driver (*.mdb); DBQ=$dbpath", "", "");,但它运行时出现错误,显示“[Microsoft][ODBC Microsoft Access Driver] Invalid Filename”......但文件在那里(同名等)。 好的。我已经完成了“快速而肮脏”的方式。我重定向到一个 .asp 文件,该文件建立连接并将我的 GET 变量插入到数据库中。但感谢您的耐心和解答!【参考方案2】:

请改用PDO。它可以通过 ODBC 连接:

$pathToMDB = "path/to/db.mdb";
$db = new PDO("odbc:Driver=Microsoft Access Driver (*.mdb);Dbq=$pathToMDB", 'admin');

【讨论】:

以上是关于无法通过 PHP 连接到 Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用PHP连接到Access数据库

如何在 PHP7 中连接到 MS Access 数据库?

如何在线获取静态 MS-Access DB 并使用 PHP 连接到它?

php数据库连接到Access

在 Windows 10 上通过 ODBC 连接到 Access 数据库时出现 IIS 500 错误

无法使用 MySQL 连接器/ODBC 将 Access DB 连接到 ODBC DSN