【发布时间】:2016-09-12 14:45:47
【问题描述】:
我正在努力建立一个 ODBC 连接,但需要一些帮助以确保设置正确。我也希望能在编写 PHP 代码以验证与数据库的连接是否正常工作时获得一些帮助。
在 Windows Server 2008 R2 机器上,我浏览到 C:\Windows\SysWOW64 并运行 odbcad32。 (这是我开始感到困惑的地方......我看过的大多数页面都提供了非常基本的信息。) DB 是一个 MS Access 文件。我应该选择哪个选项卡...用户 DSN...系统 DSN...文件 DSN?
一旦我选择了正确的选项卡,我输入的任何数据源名称是否正确? (例如,即使文件是'it.accdb',我可以将数据源命名为'Employees'吗?'Employees.accdb'?还是必须与实际文件名匹配?
最后,连接数据库的 PHP 代码是什么?数据库当前为 D:\Temp\IT.accdb。我已经在系统 DSN 选项卡中配置了当前配置的 ODBC,其数据源名称为“员工”并指向数据库。我试过以下代码:
<?php
$dbName = "Employees";
if (!file_exists($dbName)) {
die("Could not find database file.");
}
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb,*.accdb)}; DBQ=$dbName; Uid=; Pwd=;");
我尝试将 $dbName 更改为各种不同的东西,但我尝试的所有方法都导致找不到数据库文件。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
PHP脚本是否与数据库运行在同一台计算机上?
-
实时数据库位于远程虚拟服务器 (Windows Server 2008 R2) 上。我创建了一个测试数据库,我一直在移动到不同的位置以尝试成功连接。如果可能的话,我宁愿将数据库留在当前位置。但是,如果我无法远程连接到实时数据库,我会将其移动到本地位置。
-
请edit 澄清您的问题:您的PHP 代码会在Access 数据库文件所在的同一台Windows Server 2008 R2 机器上运行吗?如果没有,它会在其他 Windows 机器上运行吗?如果是这样,PHP 代码将作为 32 位进程还是 64 位进程运行?看来数据库文件是.accdb;对吗?
-
PHP 代码将在一台 Windows Server 2008 R2 计算机上运行……一台物理机。该数据库将驻留在虚拟 Windows Server 2008 R2 系统上。 PHP 代码将在 32 位进程中运行。是的...数据库是一个 .accdb 文件。如果数据库绝对需要驻留在运行 PHP 代码的同一系统上,则可能会发生这种情况;但我宁愿把它放在远程。我应该提到的另一件事是,这是一个域环境。