如何将PHP与Microsoft Access数据库连接

如何将PHP与Microsoft Access数据库连接,php,ms-access,odbc,Php,Ms Access,Odbc,我目前面临着一个新的挑战,即开发一个使用MicrosoftAccess作为主数据库而不是mysql的站点。我以前没有使用过MS Access,我想让guidiance知道如何使用它,我在上查阅了w3c网站,但代码给出了错误 警告:odbc_connect()[function.odbc connect]:SQL错误:[Microsoft][odbc驱动程序管理器]未找到数据源名称且未指定默认驱动程序,SQL状态IM002位于C:\Users\NNALI\Desktop\root\test.php

我目前面临着一个新的挑战,即开发一个使用MicrosoftAccess作为主数据库而不是mysql的站点。我以前没有使用过MS Access,我想让guidiance知道如何使用它,我在上查阅了w3c网站,但代码给出了错误

警告:odbc_connect()[function.odbc connect]:SQL错误:[Microsoft][odbc驱动程序管理器]未找到数据源名称且未指定默认驱动程序,SQL状态IM002位于C:\Users\NNALI\Desktop\root\test.php的第2行

这个错误呢

警告:odbc_exec()要求参数1是资源,布尔值在第4行的C:\Users\NNALI\Desktop\Breweries\root\test.php中给出

我被困住了,不知道该怎么办,我将非常感谢大家在这方面的帮助

<?php
    $conc = odbc_connect("northwind", "","");
    $sql  = "Select * From customers";
    $rs   = odbc_exec($conn, $sql);
?>


上面是我使用的代码

您确定odbc连接器创建得很好吗? 如果没有,请再次检查步骤“创建ODBC连接”

编辑没有DSN的连接来自

//微软访问

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);
在您的情况下,如果文件名为northwind,文件扩展名为mdb,则可能是:

$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=northwind", "", "");

如果您刚刚开始一个新项目,那么我建议您使用PDO而不是旧的
odbc\u exec()
方法。下面是一个简单的例子:


问题在于简单的打字错误。您在第2行将变量命名为“conc”,但在第4行引用了“conn”

如果需要安装,请参阅:


如果您在XAMPP环境中难以连接,我建议取消对
php.ini
文件中的以下条目的注释

extension=odbc


我收到了一个错误,但没有提示:
未捕获pdoexception:找不到驱动程序

不要混淆w3c和w3c学校-它们是完全不同的东西。同时-显示您当前拥有的代码。看起来PHP找不到数据库。谢谢,我添加了代码。一个更简单的解决方案是忽略“需求”,将数据库导出为CSV并导入MySQL。我意识到这不是问题所在,但PHP以本机方式处理CSV文件(例如fgetcsv()),Access是一个非常烦人的数据库。此外,微软在2010年就停止了对Access ODBC驱动程序的支持。“微软在2010年就停止了对Access ODBC驱动程序的支持”——这根本不是事实。较新的Access数据库引擎(又称“ACE”)附带的ODBC驱动程序—
Microsoft Access驱动程序(*.mdb,*.accdb)
——是受支持的产品。我已经安装了64位Xampp、64位php、64位ODBC驱动程序,正在尝试使用accdb。它不起作用,原因是什么?phpinfo显示了ODBC库Win32,所以问题是当使用64位代码时,它仍然在加载32位ODBC驱动程序,当我们需要64位用于accdb时…我看到了问题,我使用的是USBwebserver,它没有包含pdo扩展,所以它没有运行,我认为这是问题USBwebserver 8.6默认启用了pdo,但仅适用于
mysql,pgsql,sqlite
。尝试进入
settings\php.ini
并取消对行
的注释;extension=php_pdo_odbc.dll
,然后重新启动USBWebserver。那么为什么不升级到8.6呢?它是免费的。(另外,我刚刚尝试了8.5,它的PDO_ODBC支持被破坏了。它在8.6中运行良好。)对不起,但是USBwebserver的apache拒绝联机,我不知道问题是什么,我从昨天开始就一直在努力,如果您能提供帮助,我将不胜感激thanks@GeorgeJames奇怪,,8.6对我来说完美无瑕:我下载了它,解压了它,运行了它,它工作了。您是否收到任何错误消息?日志文件或Windows事件查看器中是否显示任何内容?
<?php
    $dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
    if (!file_exists($dbName)) {
       die("Could not find database file.");
    }
    $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");