我一直在挖掘互联网几天,阅读非常古老的信息,这导致了很老的和不存在的网站,我知道,仍然需要达到我的目标。
纠正我,如果我弄错了,请给我更多建议,如何实现这种联系。
答案 0 :(得分:4)
最后,我找到了解决方案。
使用.mdb文件挂载Win服务器目录
sshfs {user} @:/ {unix mount point} -o workaround = rename,allow_other
在unix服务器上设置 mdbtools
所以,我使用了docs中的默认PHP代码并编写了这个PHP脚本:
$rows = $cols = array();
if (($handle = popen('/usr/bin/mdb-export {unix mount point}/{file}.mdb {table} 2>&1', 'r')) !== FALSE) {
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
$num = count($data);
if ($row == 1) { for ($c=0; $c < $num; $c++) { $cols[] = $data[$c]; } }
else { for ($c=0; $c < $num; $c++) { $rows[$row][$cols[$c]] = $data[$c]; } }
$row++;
}
pclose($handle);
}
print_r($rows);
find / -name "mdb-export"
。)mdb-tables {unix mount point}/<file>.mdb
不需要驱动程序,配置或其他东西,只需简单的mdbtools和文件访问,在这种情况下,通过ssh远程连接实现。在你想要的,你可以安装fuse包,自动挂载远程目录,但这是另一个问题。
希望有人帮忙。
答案 1 :(得分:1)
您没有连接到“服务器dsn”。 DSN只是一个本地的东西。它们根本没有暴露在远程连接中。如果您希望计算机连接到数据库,则需要在该计算机上配置DSN - 您将无法使用其他位置指定的DSN。
对于PHP ODBC,那就是
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=/network/path/to/your/access/database.mdb", $user, $password);
答案 2 :(得分:1)
您是正确的,因为您需要ODBC到ODBC桥。
在OpenLInk,我们引用Multi-tier ODBC to ODBC Bridge ...
这是多层的,因为它具有如下的客户端/服务器架构 -
Linux客户端 - ODBC应用程序 OpenLink通用ODBC驱动程序
Windows Server - 32位OpenLink请求代理 32位OpenLink ODBC代理 32位Microsoft Access ODBC驱动程序(具有预配置的DSN) Microsoft Access数据库文件。
答案 3 :(得分:0)
它的广告,可能不感兴趣,但Easysoft有一个用于Access的ODBC驱动程序,可在Most * nix上使用。不需要桥梁。目前还没有FreeBSD的构建版本,但如果感兴趣,我可以在周一为你构建一个。
开源MDB工具可能足以满足您的需求,但缺乏相当多的功能。
答案 4 :(得分:0)
将PDO与MDBTools一起使用:
安装:
apt-get install libodbc1
apt-get install libmdbodbc1
apt-get install php5-odbc
(重启apache)
样品:
$query = 'SELECT * FROM Table';
$mdb_file = 'file.mdb';
$driver = 'MDBTools';
$dataSourceName = "odbc:Driver=$driver;DBQ=$mdb_file;Uid=user;Pwd=pass;";
$connection = new \PDO($dataSourceName);
$result = $connection->query($query)->fetchAll(\PDO::FETCH_ASSOC);
print_r($result);