Използване на MS Access в PHP. Използване на MS Access в PHP Авторитетен достъп php

Използване на MS Access в PHP. Използване на MS Access в PHP Авторитетен достъп php

Популярността на Microsoft Access DBMS (http://www.microsoft.com/office/access) се обяснява отчасти с удобния графичен интерфейс. В допълнение към използването на Access като самостоятелна СУБД, можете да използвате неговия графичен интерфейс, за да организирате работа с други бази данни - например MySQL или Microsoft SQL Server.

За да демонстрирам поддръжката на ODBC в PHP, ще опиша процеса на свързване към бази данни на Microsoft Access в PHP. Прави се изненадващо лесно, но благодарение на популярността на Microsoft Access, това е полезно допълнение към вашия творчески арсенал. Ще опиша този процес стъпка по стъпка:

  1. Създайте база данни на Access. Предполага се, че вече знаете как да направите това и ако не знаете как, но все пак искате да следвате изпълнението на този пример, използвайте услугите на програмата съветник. Създадох стандартна база данни за съхраняване на информация за контакт с помощта на съветник. Не забравяйте да създадете множество записи в таблицата и да запомните името на таблицата, скоро ще ни трябва!
  2. Запазете базата данни на вашия компютър.
  3. В следващата стъпка ще организираме достъп до базата данни на Access с помощта на ODBC. Изберете Старт > Настройки > Контролен панел. Намерете иконата ODBC Източници на данни (32 бита) на контролния панел. Тази икона стартира ODBC администратора, който е предназначен да конфигурира различни драйвери и източници на данни във вашата система. Стартирайте програмата, като щракнете двукратно върху тази икона. Прозорецът на администратора се отваря в раздела User DSN по подразбиране. Този раздел изброява източници на данни, които са специфични за конкретен потребител и могат да се използват само на този компютър. В този пример това е източникът на данни, който ще се използва.
  4. Щракнете върху бутона Добавяне... от дясната страна на прозореца. Отваря се нов прозорец за избор на драйвер, проектиран да работи с новия източник. Изберете реда Microsoft Access Driver(*.mdb) и щракнете върху Finish.
  5. На екрана се появява нов прозорец: Инсталиране на ODBC драйвера за Microsoft Access (ODBC Microsoft Access Setup). Намерете текстовото поле Име на източник на данни във формуляра и въведете името на базата данни на Access, която сте създали в него. Ако желаете, можете да въведете описание в текстовото поле, разположено точно под полето Име на източника на данни.
  6. Щракнете върху бутона Избор... - появява се прозорец в стила на Windows Explorer. Той ви моли да намерите база данни, която ще бъде достъпна чрез ODBC.
  7. Намерете вашата база данни в дървото на директорията и щракнете двукратно върху нея. Връщате се към прозореца Инсталиране на ODBC драйвер за Microsoft Access. Пътят до избраната база данни се показва над бутона Избор... Щракнете върху OK.
  8. Готов! Вече можете да работите с база данни на Access с помощта на ODBC.

Всичко, което трябва да направите, е да създадете скрипт, в който ще работите с базата данни през ODBC. В следващия сценарий общите ODBC функции (вижте по-горе) ще се използват за показване на цялата информация от таблицата с контакти, създадена с помощта на съветника на Access. Въпреки това, преди да обмислите сценария, е полезно да знаете как изглежда таблицата с контакти в Access (Фигура 11.3).

Ориз. 11.3. Таблица с контакти в MS Access

След като знаете каква информация ще бъде извлечена от базата данни, можем да преминем към скрипта. Ако сте забравили какво прави дадена функция, вижте описанието в началото на тази глава. Резултатите от листинг 11.7 са показани на фигура. 11.4.

Списък 11.7. Използване на ODBC функции за работа с MS Access

Не е ли всичко просто? И най-хубавото е, че този скрипт е напълно съвместим с всяка друга СУБД, която поддържа ODBC. За да практикувате, опитайте да повторите всички описани стъпки за друга СУБД, стартирайте скрипта - и ще получите същите резултати, показани на фиг. 11.4.

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

За съжаление PHP няма вградени инструменти за работа с тази СУБД, което обаче не изключва съвместната им работа - ние ще използваме ODBC за връзка с базата данни.

На първо място, трябва да създадем така наречения DSN източник. За да направите това (разглеждаме опцията, когато потребителят има инсталиран Windows 2000 Rus), в контролния панел трябва да изберете Администриране и след това Източници на данни (ODBC). След това в прозореца, който се появява, изберете раздела DSN на системата, щракнете върху бутона за добавяне, изберете драйвера на MS Access и щракнете върху бутона готово. В полето за въвеждане на име на източник на данни напишете името, с което по-късно можем да осъществим достъп до нашата база данни, например test, след което щракнете върху бутона за избор и посочете къде се намира файлът на нашата база данни на нашия диск. След това, ако е необходимо, можем да зададем потребителско име и парола за достъп до базата данни през ODBC, като щракнете върху допълнителния бутон. Сега, когато имаме ODBC източник на данни, можем да използваме функцията odbc_connect, за да се свържем с нашата база данни:

$x=odbc_connect("тест","тест","тест");
?>

За да предадем заявката към СУБД, можем да използваме функцията odbc_exec:

$res=odbc_exec($x,"създайте тест на таблица (f1 цяло число, f2 varchar(10))");
$res=odbc_exec($x,"вмъкване в тестови (f1,f2) стойности(1,"qwerty")");
$res=odbc_exec($x,"вмъкване в тестови (f1,f2) стойности(2,"asdfgh")");
?>

Ако след като изпълним този пример, отворим тестовата база данни в MS Access, ще открием, че там се е появила нова тестова таблица с полета f1 и f2 съответно от целочислен и низов тип; таблицата ще има два записа с данните, посочени в заявката.

За съжаление не всички функции за работа с ODBC работят правилно с MS Access, например функциите odbc_num_rows и odbc_fetch_array. И така, във версията на PHP, която е инсталирана на моя компютър, PHP обикновено показва съобщение, че функцията odbc_fetch_array не му е известна. Но тези проблеми могат да бъдат решени, като се опишат следните две функции и се използват вместо споменатите по-рано:

функция xodbc_num_rows($sql_id, $CurrRow = 0)
{
$NumRecords = 0;
odbc_fetch_row($sql_id, 0);
докато (odbc_fetch_row($sql_id))
{
$NumRecords++;
}
odbc_fetch_row($sql_id, $CurrRow);
връща $NumRecords;
}
функция xodbc_fetch_array($result, $rownumber=-1) (
ако ($номер на ред< 0) {
odbc_fetch_into($резултат, &$rs);
) иначе (
odbc_fetch_into($резултат, &$rs, $номер на ред);
}
foreach ($rs като $key => $value) (
$rs_assoc = $стойност;
}
връща $rs_assoc;
}

$res=odbc_exec($x,"изберете * от тест");
$cnt=xodbc_num_rows($res);
?>


за ($i=0;$i<$cnt;$i++) {
$row=xodbc_fetch_array($res,$i+1);
ехо " ";
}
?>
f1f2
".$row["f1"]."".$row["f2"]."

Популярността на Microsoft Access DBMS (http://www.microsoft.com/office/access) се обяснява отчасти с удобния графичен интерфейс. В допълнение към използването на Access като самостоятелна СУБД, можете да използвате неговия графичен интерфейс, за да организирате работа с други бази данни - например MySQL или Microsoft SQL Server.

За да демонстрирам поддръжката на ODBC в PHP, ще опиша процеса на свързване към бази данни на Microsoft Access в PHP. Прави се изненадващо лесно, но благодарение на популярността на Microsoft Access, това е полезно допълнение към вашия творчески арсенал. Ще опиша този процес стъпка по стъпка:

  • Създайте база данни на Access. Предполага се, че вече знаете как да направите това и ако не знаете как, но все пак искате да следвате изпълнението на този пример, използвайте услугите на програмата съветник. Създадох стандартна база данни за съхраняване на информация за контакт с помощта на съветник. Не забравяйте да създадете множество записи в таблицата и да запомните името на таблицата, скоро ще ни трябва!
  • Запазете базата данни на вашия компютър.
  • В следващата стъпка ще организираме достъп до базата данни на Access с помощта на ODBC. Изберете Старт > Настройки > Контролен панел (Старт > Настройки > Контролен панел). Намерете иконата ODBC източници на данни (32 бита) в контролния панел. Тази икона стартира ODBC администратора, който е предназначен да конфигурира различни драйвери и източници на данни във вашата система. Стартирайте програмата, като щракнете двукратно върху тази икона. Прозорецът на администратора се отваря в раздела User DSN по подразбиране. Този раздел изброява източници на данни, които са специфични за конкретен потребител и могат да се използват само на този компютър. В този пример това е източникът на данни, който ще се използва.
  • Щракнете върху бутона Добавяне... от дясната страна на прозореца. Отваря се нов прозорец за избор на драйвер, проектиран да работи с новия източник. Изберете реда Microsoft Access Driver (*.mdb) и щракнете върху Finish.
  • На екрана се появява нов прозорец: Инсталиране на ODBC драйвера за Microsoft Access (ODBC Microsoft Access Setup). Намерете текстовото поле Име на източник на данни във формуляра и въведете името на създадената от вас база данни на Access. Ако желаете, можете да въведете описание в текстовото поле, разположено точно под полето Име на източника на данни.
  • Щракнете върху бутона Избор... - появява се прозорец в стил Windows Explorer. Той ви моли да намерите база данни, която ще бъде достъпна чрез ODBC.
  • Намерете вашата база данни в дървото на директорията и щракнете двукратно върху нея. Връщате се към прозореца Инсталиране на ODBC драйвер за Microsoft Access. Пътят до избраната база данни се показва над бутона Избор... Щракнете върху OK.
  • Готов! Вече можете да работите с база данни на Access с помощта на ODBC.

Всичко, което трябва да направите, е да създадете скрипт, в който ще работите с базата данни през ODBC. В следващия сценарий общите ODBC функции (по-горе) ще се използват за показване на цялата информация от таблица с контакти, създадена с помощта на съветника на Access. Въпреки това, преди да разгледате сценария, е полезно да знаете как изглежда таблицата с контакти в Access (Фигура 11.3).



Ориз. 11.3.Таблица с контакти в MS Access

След като знаете каква информация ще бъде извлечена от базата данни, можем да преминем към скрипта. Ако сте забравили какво прави дадена функция, вижте описанието в началото на тази глава. Резултатите от листинг 11.7 са показани на фигура. 11.4.

Списък 11.7.Използване на ODBC функции за работа с MS Access

// Свързване към източника на ODBC данни "ContactDB" ;connect = odbc_connect("ContactDB", "","")

or die("Не може да се свърже с източник на данни.");

// Създаване на текст на заявка

$query = "ИЗБЕРЕТЕ First_Name, Last_Name, Cell_Phone, Email FROM Contacts";

// Подгответе заявката

$резултат = odbc_prepare($connect,$query);

// Изпълнение на заявката и показване на резултатите

odbc_execute($резултат);

odbc_result_all($result, "BGCOLOR="#c0c0c0" border=1");

// Обработката на резултатите е завършена, свободна памет odbc_free_result($result);

// Затворете връзката odbc_close($connect);

Не е ли всичко просто? Най-хубавото е, че този скрипт е напълно съвместим с всяка друга СУБД, която поддържа ODBC. За да практикувате, опитайте да повторите всички описани стъпки за друга СУБД, стартирайте скрипта - и ще получите същите резултати, показани на фиг. 11.4.

Ориз. 11.4.Съдържание на таблицата с контакти в уеб браузър

Също така имам проблем с отдалечена база данни на Microsoft Access. Само моята база данни е премахната доста. Намира се само в локалната мрежа, на друг компютър.

PHP функцията odbc_connect ми дава следната грешка:
Предупреждение: odbc_connect() : SQL грешка: [ODBC Microsoft Access Driver] Приложението не може да бъде стартирано. Системната база данни липсва или е отворена с изключителен достъп от друг потребител.

Това се случва, когато в моя Windows, на моя локален компютър, в ODBC драйвера, в свойствата на „Източник на данни“, раздел „Системен DSN“, посоча, че „Системна база данни“ (файл на работна група - system.mdw) се намира на мрежово устройство. Веднага щом прехвърля същия файл на локалния диск на моя компютър (където седя), всичко започва да работи добре. Не мога да разбера какво не е наред. Кажи ми моля те! По някаква причина ODBC драйверът упорито не иска да види файла на работните групи на споделено мрежово устройство. И ако файлът седи локално, тогава всичко работи с гръм и трясък. Какво може да не е наред? Между другото, същото се случва и със самата основа. Като цяло, за да работи нормално odbc_connect, се оказва, че както „Файлът на работната група“, така и самата база данни трябва да се намират на локалния компютър. Но не мога да го направя. Основата трябва да остане там, където е. И трябва да се свържа с нея дистанционно чрез ODBC и да публикувам малко информация от базата данни в интернет на страницата на уебсайта. Не мога да разбера защо не работи. В настройките на ODBC обикновено можете да посочите всички пътища към отдалечени файлове на база данни. Но след това не става. На локалния компютър всичко работи добре.

На вашия локален компютър:
OS WinXP-SP2
Microsoft Access 97
PHP v5.2.3
ODBC v3.5
Appserver v2.5.5

На отдалечен компютър има „двухиляден“ сървър.
Помислих си, че може би нещо не е наред с политиката за достъп и сигурност. Но прехвърлих базите данни на обикновен компютър, под операционна система Win 98 и на твърд диск под FAT32. И там не оре. Вече съм изтощен, не разбирам какво не е наред. Създава се впечатлението, че ODBS изобщо не може да работи с отдалечени бази данни. Но това не е така. Все пак трябва да работи. Помощ, моля!

-~{}~ 17.01.08 10:30:

Това е, проблемът е решен! Ура другари!

Все пак намерих текст по моя въпрос:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=251&page=560
Ето долната публикация. За тези, които ги мързи да се ровят там, ето дословното авторско право на тази публикация:
„Доколкото разбирам, работим под Windows. Натиснете Ctrl+Alt+Del, изберете диспечера на задачите и погледнете процеса на Apache. И виждаме, че той работи от името на SYSTEM, а не като ваше. Така че можем Нямам достъп до мрежовите ресурси, така че можем да излекуваме това, като стартираме процеса под необходимото име.

Пуснах Apache като потребител и всичко започна да работи с гръм и трясък.

Вярно, остана само една засада. ODBC връзката към базата данни трябва да бъде написана ръчно в програмен код по следния начин:
Odbc_Connect("DRIVER=(Microsoft Access Driver (*.mdb)); DBQ=//server/work/baza/mybaza.mdb; systemdb=//server/work/baza/system.mda", "потребителско име", " парола") или Die("Не мога да се свържа с базата данни");

Ако направите същото чрез „ODBC администратора“ на Windows, то пак няма да работи. Администраторът прави свои собствени пътища през имената на устройствата. Тоест по този начин:
"Z:\work\baza"
но имам нужда пътят да бъде мрежов път, без буква на устройство и с обратни наклонени черти:
"//сървър/работа/база/"

Ето още един пример, обясняващ тази нова засада.
Имаме мрежово устройство „Z:\work\baza“, свързано към компютъра. Това е пълен аналог на мрежовия път "//server/work/baza/"
Пишем най-простия програмен код на PHP за отваряне на отдалечена директория. Без никакъв ODBC. За да можете просто да проверите дали работи или не:
OpenDir("Z:\work\baza"); // дава съобщение за грешка
OpenDir("//сървър/работа/база/"); //няма грешка

Ето го новият ми въпрос. какво правя грешно Във всеки случай няма да е възможно да използвате „ODBC администратора“ на Windows за свързване на мрежови ресурси или все още е възможно по някакъв начин? Повтарям, засадата сега остава само с правилното изписване на пътищата към мрежовите ресурси. Може би някаква отделна настройка на самия PHP интерфейс е отговорна за този момент?

изгледи