无法通过 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何在线获取静态 MS-Access DB 并使用 PHP 连接到它?