Oracle і PHP – це дуже просто, HTML, XML, DHTML, Інтернет-технології, статті

Введення


СУБД Oracle, Коли проти бажання фірми-виробника, а коли згідно – в залежності від напрямку політичних вітрів в конкретні періоди часу, – ніколи, крім початкового періоду свого існування, не була повністю закритою системою. Наприклад, з моменту виникнення руху вільного ПЗ, розробки, що ведуться відкритим чином ("відкритими текстами"), весь час тримали цю СУБД в зоні своїх інтересів. Коли деякі представники такого ПО стали досить зрілими, фірма Oracle, подібно іншим великим фірмам, "легалізувала" зв'язок своєї СУБД з ними: ОС Linux входить до числа стратегічних платформ для Oracle, web-сервер Apache входить до складу штатної поставки; там же можна виявити сліди Perl і Tcl, які знайшли собі місце у внутрішніх процесах установки (OUI) і адміністрування (OEM). Ці кошти допомагають організувати взаємодію з Oracle замість коштів власної розробки (наприклад, Developer) або на додаток до них.


PHP належить до числа засобів відкритого ПЗ, не найпопулярніших, але цілком відбулися, затребуваність яких з вузла. Там же є документація, навчальні матеріали, форуми та посилання на ресурси, в числі яких є російськомовні. Наприклад, для Windows можна завантажити файл php-4.3.6-Win32.zip. Його потрібно помістити в каталог, наприклад c: php, і розпакувати. Далі можна слідувати інструкціям в install.txt, проте саме ПО PHP вже встановлено. У Unix ще потрібно побудувати бібліотеки програмою make.


Правка файлу конфігурації PHP


Знайдіть файл php.ini. Швидше за все він в каталозі c: WINNT. Знайдіть параметр extension_dir і проставте


extension_dir = “C:phpphp-4.3.6-Win32sapi”


Зніміть коментарі з рядків


;extension=php_oci8.dll
;extension=php_oracle.dll
;extension=php_dbase.dll


Останній параметр потрібно раскомментаріть тільки якщо ви маєте намір програти наступний далі приклад із записом даних у форматі dbf.


Правка файлу конфігурації Apache


Знайдіть файл httpd.conf. Швидше за все він у каталозі% ORACLE_HOME% ApacheApacheconf. Додайте рядки:


LoadModule php4_module C: / php/php-4.3.6-Win32/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php


Останній параметр вже є у вигляді коментаря, і для нього достатньо просто знак коментаря зняти.


Копіювання файлів динамічних модулів


Відповідно до зазначеного в php.ini значенням параметра extension_dir скопіюємо файли:


c:
cd phpphp-4.3.0-Win32
move php4ts.dll sapi
move extensionsphp_oci8.dll sapi
move extensionsphp_oracle.dll sapi


Перезапуск Apache і перевірка


Залишилось перезапустити Apache. Це можна зробити або за допомогою меню Start, або через зупинку і запуск служби Windows. Якщо все зроблено правильно, при запуску не буде помилок.


Складемо файл test.php:







<html>
<Head> <title> My test for php </ title> </ head>
< body>
< h3>This is a test how php works</h3>


<?php phpinfo()?>


<?php
$currtime = time ();
$currtimestr = strftime (“%H:%M:%S”, $currtime);
echo “The current time is: $currtimestr”;
?>


</body>
< /html>


Помістимо файл у% ORACLE_HOME% ApacheApachehtdocs. Наберемо у браузері http://www.ccas.ru/~prz/ORA/phppr.html, Або на вищевказаної офіційній сторінці PHP в інтернеті. Ось деякі особливості мови.


Вставки PHP в текст HTML можна оформляти не тільки як <? Php …. ?> (Див. вище), але і простіше як <? …. ?> (Що не рекомендується) або ж як <script language="php"> …. </ Script> (що довше).


phpinfo () в прикладі вище – вбудована функція PHP. Регістр, яким набираються імена функцій в PHP неістотний, а для змінних (предваряются знаком $, $ currtime і $ currtimestr в прикладі вище) навпаки, істотний.


Змінні можуть бути типів цілого, що плаває, рядок, масив, об'єкт і Булевського. Можливо явне перетворення типів. Вирази і оператори схожі на використовувані в C і Perl.


Набір функцій досить широкий і дозволяє робити обчислення (у тому числі з довільною точністю), звертатися до файлів ОС і до різних баз даних, до мережевих ресурсів (наприклад, по ftp) і до серверів LDAP, малювати зображення і динамічно виводити дані в форматі pdf і багато іншого. Ось кілька прикладів функцій, навскидку:



Подивимося, як може виконуватися звернення до даних в Oracle.


Робота з Oracle


Звернення за допомогою PHP до даних в Oracle може здійснюватися через CGI або через спеціальні функції. Перша можливість ризикована з точки зору безпеки і тут не розглядається.


Друга, в свою чергу, реалізується двома наявними бібліотеками: php_oracle і php_oci8, з яких друга вважається більш ефективною. Продемонструвати ту і іншу можна на прикладі файлу employees.php:







<html>
<Head> <title> Access to Oracle from php </ title> </ head>
< body>
<H3> The two types of Access to Oracle from php: </ h3>


<?php
if ($c = OCILogon(“scott”, “tiger”, “orcl”)) {


$s = OCIParse($c, “select ename, sal from emp”);
OCIExecute($s, OCI_DEFAULT);
while (OCIFetch($s)) {
echo “ename = ” . ociresult($s, “ENAME”) .
“, sal = ” . ociresult($s, “SAL”) . “<br/>”;
}
OCILogoff($c);


} else {
$err = OCIError(); echo “Oracle Connect Error ” . $err[text];
}
?>


<hr/>


<?php
if ($c = ora_logon(“scott@orcl”,”tiger”)) {


$curs = ora_do($c, “SELECT ename, sal FROM emp”);
while (ora_fetch($curs)) {
echo “ename = ” . ora_getcolumn($curs, 0) .
“, sal = ” . ora_getcolumn($curs, 1) . “<br/>”;
}
ora_logoff($c);


} else {
echo “Oracle Connect Error ” . ora_error();
}
?>


<hr/>
< /body>
< /html>


Знову помістимо файл в htdocs і звернемося по



<html>
<Head> <title> Access to Oracle from php </ title> </ head>
< body>
< h3>INSERT example:</h3>


< ?php
if ($c = OCILogon(“scott”, “tiger”, “orcl”)) {


$name = (string)$_REQUEST[“empname”];
$no = (int)$_REQUEST[“empno”];


$ Query = "INSERT INTO emp (ename, empno) VALUES (: bind1,: bind2)";
$s = OCIParse($c, $query);
OCIBindByName($s, “:bind1”, $name);
OCIBindByName($s, “:bind2”, $no);


OCIExecute($s, OCI_DEFAULT);
OCICommit($c);
OCILogoff($c);


}
?>


Done.
< hr/>
< /body>
< /html>


Помістимо файл в htdocs і звернемося по



<html>
<Head> <title> Access from php to different data bases </ title> </ head>
< body>
< h3>Distant data transfer from Oracle to dbf:</h3>


< ?php
$dbname = “c:/fromoracle.dbf”;


$def =
array(
array(“ename”, “C”, 10),
array(“sal”, “N”, 7, 2)
);


$dbid = dbase_create($dbname, $def);
if (!$dbid) echo “Failed to open dbf.”
?>


< ?php
if ($c=OCILogon(“scott”, “tiger”, “orcl”)) {


$s = OCIParse($c, “select ename, sal from emp”);
OCIExecute($s, OCI_DEFAULT);
while (OCIFetch($s)) {
$rec[1] = ociresult($s, “ENAME”);
$rec[2] = ociresult($s, “SAL”);
if (!dbase_add_record($dbid, array($rec[1],$rec[2])))
echo “Failed to add a record. “;
}
OCILogoff($c);


}
?>


Done.
< hr/>
< /body>
< /html>


Помістимо файл в htdocs і звернемося по Sybase,

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Метки: , , , , , ,
Рубрики: DHTML, HTML, XML

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*