我正在开发一个应用程序,在该应用程序中,使用链接表将启用ODBC的数据源中的数据导入MS Access 2007数据库。棘手的部分是每次进行链接刷新(或打开链接表)时,ODBC数据源会提示出一个窗口,其中必须输入4个不同的参数(用户名,密码,服务器名,工作组名)。
虽然这可以手动完成,但我发现无法以编程方式阅读此链接表。
我使用PHP脚本来读取链接表。当我尝试读取此链接表时,PHP脚本的执行会无限期地停止。我的DSN已正确配置,并且可以在所有其他情况下成功读取数据,包括那些数据源不需要任何输入参数/凭据的链接表。但是,在这种情况下失败了。
简而言之,我的系统 PHP < - > M S Access(链接表)< - ODBC数据源。 PHP脚本旨在使用链接表从ODBC数据源读取更新的数据。由于某些原因,PHP无法直接与ODBC数据源接口,因此我使用MS Access作为中介。
PHP的odbc_connect功能仅允许DSN名称,用户名,密码,cursor_type作为参数。我不知道如何输入我的MS Access表链接到的ODBC数据源所需的4个参数(用户名,密码,服务器名,工作组名)。
我在Windows 7上使用PHP 5.4和MS Access 2007.
我请求开发人员社区帮助我提供必要的指导。任何有关变通方法的建议也欢迎。
先谢谢。
答案 0 :(得分:0)
如果您使用双ODBC:PHP> ODBC> MS ACCESS> ODBC>消息来源..您有以下选择。
任何方式,你的麻烦的解决方案将是。通过使用文件dns或保存密码刷新链接表时,使Access不会提示参数。
答案 1 :(得分:0)
直接连接到链接表派生的数据源。如果是MS Access,SQL Server,MySQL等,则为该特定数据库使用适当的已安装的ODBC驱动程序。
这是使用PDO的PHP / MS Access无DSN解决方案。
另请参阅different connection strings,其中包括工作组,用户和密码参数。
<?php
$database="C:\Path\To\database.accdb";
# open the connection
try {
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};
DBq=$database;Uid=Admin;Pwd=;");
$sql = "SELECT * FROM table1";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
echo "\n";
while($row = $STH->fetch()) {
# output query results
echo $row;
}
# close the connection
$dbh = null;
?>