Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запросы к базам Access при помощи PHP
 
 автор: anatoliy   (24.04.2007 в 23:32)   письмо автору
 
 

Добрый вечер (день). Подскажите пожалуйста начинающему, возможен ли доступ к базам данных Access(запись, чтение) при помощи PHP?
Если да, пожалуйста приведите пример запроса на чтение
Зараннее спасибо за ответы!

   
 
 автор: Wyfinger   (25.04.2007 в 15:06)   письмо автору
 
   для: anatoliy   (24.04.2007 в 23:32)
 

Использование OLE - из PHP можно "связаться" с драйверами ADO и получить/изменить/добавить данные.
Например создать базу данных:


function CreateADOBase ($filename) {
    
    $guid_str = 'DAO.DBEngine.36'; // либо 'DAO.DBEngine.35', в зависимости от версии
    
    $SERW = new COM($guid_str);
    $init_str = ";LANGID=0x0409;CP=1252;COUNTRY=0";
    $SERW->Workspaces[0]->CreateDatabase($filename, $init_str, 32);
    
}


Остальные методы, доступные в интерфейсе можете найти в MSDN или другой документации, либо взять Delphi (6-7), там уже есть классы-обертки над этим интерфейсом и перечисленны его методы.

Также К. Гетц в "Access. Сборник рецептов", говорит о DAP (Data Access Pages) - Страницы доступа к данным, но я, честно говоря, толку этой технологии не вижу, т.к. здесь данные обрабатывает пользователь, соответственно у него должна стоять ADO, да и в PHP такой вариант, наверное, не воткнешь.

   
 
 автор: Wyfinger   (27.04.2007 в 08:50)   письмо автору
 
   для: Wyfinger   (25.04.2007 в 15:06)
 

Чуть покопал в эту сторону (тема интересная и нужная), вот результат.

Распечатка таблицы базы данных:

<?php
function PrintMDBTable($filename$tablename) {

    
$guid_str 'DAO.DBEngine.36'// либо 'DAO.DBEngine.35', в зависимости от версии

    
$SERW = new COM($guid_str);
    
$WS $SERW->Workspaces(0);
    
$DB $WS->OpenDataBase("$filename");
    
$RS $DB->OpenRecordset("$tablename");

    
$FieldCount $RS->Fields->Count;
    Print 
"Database Name: <b>'$filename'</b><br>\n";
    Print 
"Table Name: <b>'$tablename'</b><br><br>\n";
    Print 
"Fields Count: <b>$FieldCount</b><br><br>\n";
    Print 
"<b>Data:</b><br><table border=0 cellspacing=0 cellpadding=4>\n";
    Print 
"<tr bgcolor=#CCCCCC>\n";
    
// Заголовки полей таблицы
    
for ($i=0$i<$FieldCount$i++) {
        
$CellValue $RS->Fields($i);
        Print 
"<td>".strval($CellValue->Name)."</td>\n";
    }
    Print 
"</tr>\n";
    
// Печать самих данных
    
$RS->MoveFirst();
    while (!(
$RS->EOF)) {

        Print 
"<tr>\n";

        for (
$i=0$i<$FieldCount$i++) {
            
$CellValue $RS->Fields($i);
            Print 
"<td>".strval($CellValue->Value)."</td>\n";
        }
        
        Print 
"</tr>\n";        
        
$RS->MoveNext();
        
    }
}
?>


Примечание: Код не закрывает ссылки на интерфейс DAO, это сделано из расчета дальнейшего использования, поскольку подключение к базе занимает некоторое время. Чтобу закрыть подключение нужно вручную удалить объект $SERW.

Чтобы выполнять запросы (в т.ч создавать новые таблицы, удалять старые или редактировать структуру, а также создавать индексы) нужно пользоваться методом Execute базы данных ($DB), добавление новых записей -

$RS->AddNew();
// Заполнение
$RS->Id->Value = 1;  // Id - имя поля
$RS->Update();


Остальные методы интерфейса можно подчерпнуть из файла DAOXP.pas (см. Приложение).

   
 
 автор: anatoliy   (02.05.2007 в 01:20)   письмо автору
 
   для: Wyfinger   (27.04.2007 в 08:50)
 

Большое спасибо Wyfinger за приведенный пример !!! Теперь понадобится немного времени чтобы со всем этим разобраться...

   
 
 автор: kail_braslovski   (25.04.2007 в 17:26)   письмо автору
 
   для: anatoliy   (24.04.2007 в 23:32)
 

Проще некуда.... Надо через Панель управление, Администрирования, Источники данных, Системный дсн зарегистрировать вашу базу с определенным имененем...
А затем через odbc_connect подключаться к ней, а черех odbc_exec выполнять запросы...

   
 
 автор: anatoliy   (02.05.2007 в 01:32)   письмо автору
 
   для: kail_braslovski   (25.04.2007 в 17:26)
 

Большое спасибо kail_braslovski за указанное направление для решения данной проблемы!!!. До этого пробовал разобраться сам не получалось. Проблема как оказалось была в Системном DSN, а я пробовал с пользовательским и файловым. Сейчас всё заработало! Сейчас разбираюсь с вариантом предложенным Wyfinger. Ещё раз спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования