链接 MS Access 和数据库服务器而不安装任何额外的驱动程序
Linking MS Access and database server without installing any additional drivers
在我们公司的网站上,我们有一个 html
表格,其中出于咨询原因通过 php
生成电子邮件 - 效果很好。我的上司要我将html
-表单的信息保存到MS Access
-数据库中。
我想不出一个直接从 php
写入 MS Access
的解决方案 - 所以我说服他们通过 phpMyAdmin
使用 MySQL
- 链接Access
.
中的 ODBC
表格
php
和 MySQL
之间的联系很简单,MS Access
和 MySQL
之间的联系也很简单:
为此,每个客户端都需要一个 ODBC-MySQL-Provider
来打开数据库,IT 部门不想安装它。
我们还在 Windows Server
上使用 MS SQL Server
- 我也可以将 php 连接到 SQL Server
- 但在这种情况下我们需要安装 ODBC SQL Server Provider
链接表时或 SQL Server Native Clients
如果我们使用 Ado
。 - IT 人员:
no installation of providers on all clients.
我的问题是:
Is there any possible solution for accessing MySQL/SQL Server
from MS Access
without the installation of ODBC-Providers
at all?
我对此压力很大,找不到任何可以满足用户需求和期望的东西。
提前致谢
巴里斯
编辑:工作 php/MySQL
-代码 - 基于 mysqli
$servername = "----------.de";
$username = "-------";
$password = "--------";
$dbName = "---------";
$port = "-------";
$con= mysqli_connect($servername, $username, $password, $dbName, $port );
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
以下连接字符串适用于使用集成的 SQLSRV32.dll
-provider 从 MS Access
连接到服务器端 ms sqlserver
。感谢 GordThompson
cs = "Driver={SQL Server};"
cs = cs & "Server=ip-adress,port-number;"
cs = cs & "Database=database-name;"
con.Open cs, "username", "password"
由于可以在不使用其他提供程序的情况下连接到 SQL Server
,因此我将使用 PDO/SQLServer
组合,并根据上面的连接字符串加载数据。
首先,PHP 完全可以连接到 MS Access 数据库(特别是 Jet/ACE SQL 引擎)。在现代计算中,几乎所有通用语言(C#、Java、PHP、Perl、Python、R、VB)都可以连接到所有流行的关系数据库管理系统(RDMS) - 文件级别(SQLite、MS Access)和服务器级别(SQL服务器、MySQL、Postgre、Oracle、DB2),每个都使用某种类型的自定义或通用化图书馆。
和PHP的PDO, you can practically interchange the connected backend database. So however you connect to MySQL, you can model such a connection with other databases. The web popularity of PHP/MySQL make it seem they are married to each other but they are not! Below are examples using DSN, Driver, and even PHP's own API, sqlsrv。
MS 访问
# USING DSN
$database="C:\Path\To\Database\File.accdb";
try {
$dbh = new PDO("odbc:DSN=MS Access Database;DBq=$database;");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
# USING DRIVER (NON-DSN)
$database="C:\Path\To\Database\File.accdb";
try {
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBq=$database;");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
SQL 服务器
# WITH ODBC DRIVER PDO
try {
$dbh = new PDO("odbc:Driver={SQL Server};Server=$server;database=$database",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM dbo.tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
# WITH SQLSRV PDO
try {
$dbh = new PDO("sqlsrv:server=$server;database=$database",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM dbo.tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
其他语言连接的额外资源:
由于最重要的问题是避免在客户端计算机上安装额外的驱动程序,并且您有可用的 Microsoft SQL 服务器,因此您可以
让您的PHP脚本将所需信息写入SQL服务器,然后
创建一个 Access 进程,使用每个 Windows 副本安装的 "SQL Server" ODBC 驱动程序从 SQL 服务器检索信息。
在我们公司的网站上,我们有一个 html
表格,其中出于咨询原因通过 php
生成电子邮件 - 效果很好。我的上司要我将html
-表单的信息保存到MS Access
-数据库中。
我想不出一个直接从 php
写入 MS Access
的解决方案 - 所以我说服他们通过 phpMyAdmin
使用 MySQL
- 链接Access
.
ODBC
表格
php
和 MySQL
之间的联系很简单,MS Access
和 MySQL
之间的联系也很简单:
为此,每个客户端都需要一个 ODBC-MySQL-Provider
来打开数据库,IT 部门不想安装它。
我们还在 Windows Server
上使用 MS SQL Server
- 我也可以将 php 连接到 SQL Server
- 但在这种情况下我们需要安装 ODBC SQL Server Provider
链接表时或 SQL Server Native Clients
如果我们使用 Ado
。 - IT 人员:
no installation of providers on all clients.
我的问题是:
Is there any possible solution for accessing
MySQL/SQL Server
fromMS Access
without the installation ofODBC-Providers
at all?
我对此压力很大,找不到任何可以满足用户需求和期望的东西。
提前致谢
巴里斯
编辑:工作 php/MySQL
-代码 - 基于 mysqli
$servername = "----------.de";
$username = "-------";
$password = "--------";
$dbName = "---------";
$port = "-------";
$con= mysqli_connect($servername, $username, $password, $dbName, $port );
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
以下连接字符串适用于使用集成的 SQLSRV32.dll
-provider 从 MS Access
连接到服务器端 ms sqlserver
。感谢 GordThompson
cs = "Driver={SQL Server};"
cs = cs & "Server=ip-adress,port-number;"
cs = cs & "Database=database-name;"
con.Open cs, "username", "password"
由于可以在不使用其他提供程序的情况下连接到 SQL Server
,因此我将使用 PDO/SQLServer
组合,并根据上面的连接字符串加载数据。
首先,PHP 完全可以连接到 MS Access 数据库(特别是 Jet/ACE SQL 引擎)。在现代计算中,几乎所有通用语言(C#、Java、PHP、Perl、Python、R、VB)都可以连接到所有流行的关系数据库管理系统(RDMS) - 文件级别(SQLite、MS Access)和服务器级别(SQL服务器、MySQL、Postgre、Oracle、DB2),每个都使用某种类型的自定义或通用化图书馆。
和PHP的PDO, you can practically interchange the connected backend database. So however you connect to MySQL, you can model such a connection with other databases. The web popularity of PHP/MySQL make it seem they are married to each other but they are not! Below are examples using DSN, Driver, and even PHP's own API, sqlsrv。
MS 访问
# USING DSN
$database="C:\Path\To\Database\File.accdb";
try {
$dbh = new PDO("odbc:DSN=MS Access Database;DBq=$database;");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
# USING DRIVER (NON-DSN)
$database="C:\Path\To\Database\File.accdb";
try {
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBq=$database;");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
SQL 服务器
# WITH ODBC DRIVER PDO
try {
$dbh = new PDO("odbc:Driver={SQL Server};Server=$server;database=$database",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM dbo.tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
# WITH SQLSRV PDO
try {
$dbh = new PDO("sqlsrv:server=$server;database=$database",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM dbo.tablename";
$STH = $dbh->query($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
echo $e->getMessage()."\n";
exit;
}
# close the connection
$dbh = null;
其他语言连接的额外资源:
由于最重要的问题是避免在客户端计算机上安装额外的驱动程序,并且您有可用的 Microsoft SQL 服务器,因此您可以
让您的PHP脚本将所需信息写入SQL服务器,然后
创建一个 Access 进程,使用每个 Windows 副本安装的 "SQL Server" ODBC 驱动程序从 SQL 服务器检索信息。