Logo CitForum CITForum на CD Форумы Газета Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

21.05.2012

Google
WWW CITForum.ru
2003 г

Работа с MS Access в PHP

Дмитрий Верещака, http://dmitry.rsl.ru

Если Вы планируете создавать свой динамический сайт на платформе Windows, то у Вас скорее всего возникнет задача выбора СУБД для хранения информации (с языком, на котором Вы будете его программировать, судя по всему, вопросов не возникает). Одним из вариантов её решения, может оказаться использование MS Access в качестве SQL-сервера. Далее будет описано, как в скрипте, написанном на PHP, обратиться к базе данных MS Access.

К сожалению, в PHP нет встроенных средств для работы с этой СУБД, что, однако не исключает совместной их работы - для подключения к базе мы будем использовать ODBC.

Первым делом мы должны создать так называемый DSN Source. Для этого (рассматривается вариант, когда у пользователя установлена ОС Windows 2000 Rus) в панели управления мы должны выбрать пункт Администрирование, а затем Источники данных (ODBC). Далее, в появившемся окне (рис.1)



рис. 1

выбираем вкладку системный DSN, нажимаем кнопку добавить, выбираем драйвер MS Access (рис.2)



рис. 2

и нажимаем кнопку готово. В поле ввода имя источника данных пишем имя, по которому впоследствии мы сможем обратиться к нашей базе данных, например, test, затем нажимаем кнопку выбрать и указываем, где у нас на диске находится наш файл с БД (рис. 3)



рис. 3

Затем, если в этом есть необходимость, можем задать имя пользователя и пароль для доступа к БД через ODBC, нажав на кнопку дополнительно (рис. 4)


рис. 4

Теперь, когда у нас есть источник данных ODBC, мы можем воспользоваться функцией odbc_connect для подключения к нашей базе:

<?
 $x=odbc_connect("test","test","test");
?>
Чтобы передать запрос в СУБД, мы можем воспользоваться функцией odbc_exec:
<?
 $res=odbc_exec($x,"create table test (f1 integer, f2 varchar(10))");
 $res=odbc_exec($x,"insert into test (f1,f2) values(1,'qwerty')");
 $res=odbc_exec($x,"insert into test (f1,f2) values(2,'asdfgh')");
?>
Если после выполнения этого примера открыть базу test в MS Access, то мы обнаружим, что там появилась новая таблица test с полями f1 и f2 целочисленного и строкового типов соответственно; в таблице будут две записи с данными, которые были указаны в запросе.

К сожалению, не все функции для работы с ODBC корректно работают с MS Access, например, это функции odbc_num_rows и odbc_fetch_array. Так, в той версии PHP, что установлена на моём компьютере, PHP вообще выдаёт сообщение, что функция odbc_fetch_array ему не известна. Но эти проблемы решаются, если описать две следующие функции и использовать их вместо ранее упоминавшихся:

<?
function xodbc_num_rows($sql_id, $CurrRow = 0) 
{ 
 $NumRecords = 0; 
 odbc_fetch_row($sql_id, 0); 
 while (odbc_fetch_row($sql_id)) 
 { 
  $NumRecords++; 
 } 
 odbc_fetch_row($sql_id, $CurrRow); 
 return $NumRecords; 
}
function xodbc_fetch_array($result, $rownumber=-1) {
 if ($rownumber < 0) {
   odbc_fetch_into($result, &$rs);
  } else {
  odbc_fetch_into($result, &$rs, $rownumber);
 }
 foreach ($rs as $key => $value) {
   $rs_assoc[odbc_field_name($result, $key+1)] = $value;
 }
 return $rs_assoc;
}

 $res=odbc_exec($x,"select * from test");
 $cnt=xodbc_num_rows($res);
?>
<table border=1 cellspacing=0 cellpadding=4>
<tr><td>f1</td><td>f2</td></tr>
<?
 for ($i=0;$i<$cnt;$i++) {
  $row=xodbc_fetch_array($res,$i+1);
  echo '<tr><td>'.$row['f1'].'</td><td>'.$row['f2'].'</td></tr>';
 }
?>
</table>
Результат выполнения этого примера приведён ниже:

f1f2
1qwerty
2asdfgh

Таким образом, теперь, если у Вас возникнет задача подключения к базе MS Access из PHP, Вы смело сможете её решить в кратчайшие сроки.

Подписка на новости CITForum.ru

Новые публикации:

7 июля

  • Управление параллелизмом с низкими накладными расходами для разделенных баз данных в основной памяти

  • Рекурсивные запросы в Oracle

  • Жесткий диск WD10EARS с сектором 4 КБ. Подготовка к эксплуатации в Linux.

    Обзоры журнала Computer:

    Газета:

  • Московские пробки - исследование IBM

  • От Osborne до iPad: эволюция портативных компьютеров

    19 мая

  • Прозрачный механизм удаленного обслуживания системных вызовов

  • Система моделирования Grid: реализация и возможности применения

    Газета:

    Майкл Стоунбрейкер:

  • Ошибки в системах баз данных, согласованность "в конечном счете" и теорема CAP

  • Дискуссия по поводу "NoSQL" не имеет никакого отношения к SQL

    29 апреля

  • Материалы конференции "Корпоративные Базы Данных-2010"

  • Разные облики технологии баз данных (отчет о конференции)

    14 апреля

  • MapReduce: внутри, снаружи или сбоку от параллельных СУБД?

  • Научные вызовы технологиям СУБД

    Обзоры журнала Computer:

    31 марта

  • Рационализация согласованности в "облаках": не платите за то, что вам не требуется

  • Взаимные блокировки в Oracle

  • Архитектура среды тестирования на основе моделей, построенная на базе компонентных технологий

  • Объектное представление XML-документов

    Газета:

  • Microsoft для российских разработчиков: практика с элементами фундаментальности

    10 марта

  • HadoopDB: архитектурный гибрид технологий MapReduce и СУБД для аналитических рабочих нагрузок

  • Классификация OLAP-систем вида xOLAP

  • BGP. Три внешних канала. Балансировка исходящего и входящего трафиков

    Газета:

  • Что мы знаем об iPhone 4G?

    17 февраля

  • MapReduce и параллельные СУБД: друзья или враги?

  • Объектно-ориентированное программирование в ограничениях: новый подход на основе декларативных языков моделирования данных

  • Системологический подход к декомпозиции в объектно-ориентированном анализе и проектировании программного обеспечения

    Газета:

  • Эволюция Wine

    3 февраля

  • Дом на песке

  • Реальное переосмысление "формальных методов"

  • Интервью с Найджелом Пендзом

    Газета:

  • iPad. Первый взгляд на долгожданный планшет от Apple

  • Я не верю в iPad

    20 января

  • SQL/MapReduce: практический подход к поддержке самоописываемых, полиморфных и параллелизуемых функций, определяемых пользователями

  • Данные на лету: как технология потокового SQL помогает преодолеть кризис

    Обзоры журнала Computer:

    2 декабря

  • Сергей Кузнецов. Год эпохи перемен в технологии баз данных

    18 ноября

  • Генерация тестовых программ для подсистемы управления памятью микропроцессора

  • Сравнительный анализ современных технологий разработки тестов для моделей аппаратного обеспечения

    Все публикации >>>


  • IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — тел. +7 495 6608306, ICQ 232284597 Пресс-релизы — pr@citforum.ru
    Послать комментарий
    Информация для авторов

    Редакция раздаёт котят!

    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2009 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...