Отображение первичного ключа через PHP и MS Access 2010

Я был в этом в течение нескольких часов. Я пытаюсь отобразить первичный ключ данной таблицы в базе данных доступа. Сначала пытался odbc_primarykeys функция, а затем попытался odbc_statistics,

Оба дают ошибку:

odbc_primarykeys (): ошибка SQL: не удалось получить сообщение об ошибке, SQL
состояние HY000 в SQLPrimaryKeys

а также

odbc_statistics (): ошибка SQL: не удалось получить сообщение об ошибке, состояние SQL
HY000 в 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) пустым и получил ту же ошибку. Ошибка HY000 в поиске Google не сильно помогла, и php.net страницы на удивление легки в поддержке. Функции как odbc_field_len & odbc_field_type отлично работает на странице. Любое понимание?

1

Решение

Я почти уверен, что нет способа получить эту информацию через драйвер 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);

Пример результата для таблицы с двумя полями (столбцами) в качестве ее первичного ключа:

Array
(
[0] => City
[1] => State
)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]