通过 PHP 和 MS Access 2010 显示主键
Showing primary key via PHP and MS Access 2010
我已经在这里待了几个小时了。我正在尝试在访问数据库上显示给定 table 的主键。首先是尝试 odbc_primarykeys
函数,然后尝试 odbc_statistics
.
都报错:
odbc_primarykeys(): SQL error: Failed to fetch error message, SQL
state HY000 in SQLPrimaryKeys
和
odbc_statistics(): SQL error: Failed to fetch error message, SQL state
HY000 in SQLStatistics.
这是我的代码:
$dbu = realpath('E:\AccessBackEnds\Universal\UniversalBackEnd.accdb');
$connu = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$dbu",'','') or die ("Unable to connect to server");
$result1 = odbc_primarykeys($connu, "UniversalBackEnd", "Administrators", "UserInformation");
$result2 = odbc_statistics($connu, "UniversalBackEnd", "Administrators", "UserInformation", 1, 0);
我试过将数据库名称 (UniversalBackEnd
) 和所有者 (Administrators
) 留空,但出现了同样的错误。 Google 搜索中的 HY000 错误没有太大帮助,php.net 页面的支持令人惊讶。 odbc_field_len
和 odbc_field_type
等函数在页面上运行良好。有什么见解吗?
我很确定无法通过 Access ODBC 驱动程序检索该信息。您可能需要使用 com_dotnet
和 ACE DAO 来获取它:
$pkFields = array();
$dbe = new COM("DAO.DBEngine.120");
$db = $dbe->OpenDatabase("C:\Users\Public\foo.accdb");
$tbd = $db->TableDefs("Table2");
foreach ($tbd->Indexes as $idx) {
if ($idx->Primary) {
foreach ($idx->Fields as $fld) {
$pkFields[] = $fld->Name;
}
break;
}
}
$db->Close();
print_r($pkFields);
以两个字段(列)为主键的 table 的示例结果:
Array
(
[0] => City
[1] => State
)
我已经在这里待了几个小时了。我正在尝试在访问数据库上显示给定 table 的主键。首先是尝试 odbc_primarykeys
函数,然后尝试 odbc_statistics
.
都报错:
odbc_primarykeys(): SQL error: Failed to fetch error message, SQL state HY000 in SQLPrimaryKeys
和
odbc_statistics(): SQL error: Failed to fetch error message, SQL state HY000 in SQLStatistics.
这是我的代码:
$dbu = realpath('E:\AccessBackEnds\Universal\UniversalBackEnd.accdb');
$connu = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$dbu",'','') or die ("Unable to connect to server");
$result1 = odbc_primarykeys($connu, "UniversalBackEnd", "Administrators", "UserInformation");
$result2 = odbc_statistics($connu, "UniversalBackEnd", "Administrators", "UserInformation", 1, 0);
我试过将数据库名称 (UniversalBackEnd
) 和所有者 (Administrators
) 留空,但出现了同样的错误。 Google 搜索中的 HY000 错误没有太大帮助,php.net 页面的支持令人惊讶。 odbc_field_len
和 odbc_field_type
等函数在页面上运行良好。有什么见解吗?
我很确定无法通过 Access ODBC 驱动程序检索该信息。您可能需要使用 com_dotnet
和 ACE DAO 来获取它:
$pkFields = array();
$dbe = new COM("DAO.DBEngine.120");
$db = $dbe->OpenDatabase("C:\Users\Public\foo.accdb");
$tbd = $db->TableDefs("Table2");
foreach ($tbd->Indexes as $idx) {
if ($idx->Primary) {
foreach ($idx->Fields as $fld) {
$pkFields[] = $fld->Name;
}
break;
}
}
$db->Close();
print_r($pkFields);
以两个字段(列)为主键的 table 的示例结果:
Array
(
[0] => City
[1] => State
)