mdb в mysql

Статус
В этой теме нельзя размещать новые ответы.

saen

Постоялец
Регистрация
6 Авг 2006
Сообщения
756
Реакции
129
нужно перегнать базу данный из microsoft access в mysql без использования драйвера odbc. есть готовый класс mdb_class.php, я его тут прилепил архивом.

нужно добавить функции в класс чтобы он вытаскивал из mdb-файла список таблиц массивом
 

Вложения

  • mdb-2006-03-07.zip
    3,5 KB · Просмотры: 13
Проверь такой вариант:

PHP:
include 'class_mdb.php';

$mdb = new mdb('mymdbfile.mdb');
$mdb->execute('show tables;');

$aTables = array();
$npp = 1;
while( !$mdb->eof() )
{
  $aTables[] = $mdb->fieldvalue(1);
  echo "$npp " . $mdb->fieldvalue(0) . ' ' . $mdb->fieldvalue(1) . ' ' . $mdb->fieldvalue(2);
  $mdb->movenext();
}

print_r $aTables;
 
нужен код, который вытаскивает список таблиц, а также ключевые поля из таблицы. как реализовать?
 
нужен код, который вытаскивает список таблиц, а также ключевые поля из таблицы. как реализовать?

список таблиц хотя бы получился тем кодом, который я привел? Что выводит на экран тот скрипт?
 
Ошибочная инструкция SQL; предполагалось 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' или 'UPDATE'.

класс не предусматривает твой запрос
 
вот функция, которая должна быть добавлена в класс. Эта функция возвращает массив со списком полей таблицы:

PHP:
function GetTableFields($TableName) {
  $arr=array(Null, Null, Null, "TABLE"); 
  $rs=$this->ADODB->OpenSchema(20, $arr); 
  if(!$rs->eof()){ 
    while(!$rs->eof()){ 
        $result_arr[]=$rs->fields[2]->value; 
        $rs->movenext(); 
    } 
  } else { 
    $result_arr=false; 
  } 
}

пример использования:

PHP:
include 'class_mdb.php'; 
$mdb = new mdb('mymdbfile.mdb'); 
$aFields = $mdb->GetTableFields('mytable'); 
print_r $aFields;

если заработает, то перейдем к получению списка таблиц.
 
поля таблицы я итак вытаскиваю. нужна проверка является ли поле ключевым(Primary key).
и на print_r ругается денвер
 
print_r - функция.
Правильно print_r($aFields);
 
так как проверить является ли поле ключом?
 
замени код функции на этот:

PHP:
function GetTableFields($TableName) {
  $arr=array(Null, Null, Null, "TABLE"); 
  $rs=$this->ADODB->OpenSchema(20, $arr); 
  if(!$rs->eof()){ 
    while(!$rs->eof()){ 
        $field_name = $rs->fields['COLUMN_NAME']->value;
        $field_name2 = $rs->fields[2]->value;
        $field_propid = $rs->fields['COLUMN_PROPID']->value;
        $field_ord = $rs->fields['ORDINAL_POSITION']->value;
        $field_flags = $rs->fields['COLUMN_FLAGS']->value;
        $result_arr[]= "name=$field_name name2=$field_name propid=$field_propid ord=$field_ord flags=$field_flags";
        $rs->movenext(); 
    } 
  } else { 
    $result_arr=false; 
  } 
}

пример использования:

PHP:
include 'class_mdb.php'; 
$mdb = new mdb('mymdbfile.mdb'); 
$aFields = $mdb->GetTableFields('mytable'); 
print_r($aFields);

покажи, что выведет функция print_r
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху