Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Oracle и PHP - это очень просто!

Автор: Владимир Пржиялковский

Владимир Пржиялковский , преподаватель технологий Oracle

PHP – простое в употреблении, легкое и бесплатное средство для динамического построения страниц HTML на сервере, перед передачей клиенту в браузер. PHP умеет обращаться в СУБД Oracle, и это делает его хорошим кандидатом для разработки приложений web на основе Oracle малой и средней сложности.

Введение

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

PHP принадлежит к числу средств открытого ПО, вполне состоявшихся, востребованность которых непрерывно растет (см. http://www.php.net/usage.php). PHP позволяет динамически формировать страницы HTML на сервере web. В этом качестве он занимает нишу, общую с Perl, Mason, Aquaruim (все – свободное ПО) и сервлетами (например, с JavaServer Pages). Сервером web может быть Apache, IIS или же еще несколько разновидностей. Здесь нам важно, что PHP умеет обращаться к СУБД Oracle и что это легкая и простая система.

Установка Oracle

Дальнейшие примеры будут приведены для включения поддержки Oracle в PHP. Можно использовать версию Apache со штатного установочного комплекта СУБД Oracle (в версии Oracle 10.1 – на Companion CD). Дежурное напоминание: для промышленного использования сервера web лучше все же взять последнюю версию Apache из сети, так как она более функциональна, надежна и защищена.

В Unix потребуется построить библиотеки программой make.

Найдите файл php.ini. Скорее всего он в каталоге c:\WINNT. Найдите параметр extension_dir и снимите комментарии (;) со строк:

;extension=php_oci8.dll

;extension=php_oracle.dll

;extension=php_dbase.dll

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

Копирование файлов динамических модулей

В соответствии с указанным в php.ini значением параметра extension_dir скопируем файлы:

move extensions\php_oci8.dll sapi

move extensions\php_oracle.dll sapi

Перезапуск Apache и проверка

Осталось перезапустить Apache. Это можно сделать либо с помощью меню Start, либо через останов и запуск службы Windows. Если все проделано правильно, при запуске не будет ошибок.

Составим файл test.php:

<?php phpinfo(); ?>

Наберем в браузере адрес http://localhost/test.php. Если ошибок не имеется, значит модули *.dll для Oracle установлены правильно.

Посмотрим, как может выполняться обращение к данным в 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>

Обратимся по адресу http://localhost/employees.php.

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

Вот пример вставки записи в БД. Данные передаются через строку запроса HTTP. Это позволяет организовать в приложении содержательный диалог, подключив средства ввода форм HTML.

Подготовим файл insert.php:

<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 и обратимся по адресу http://localhost/insert.php?empname=Вася&empno=1111. В SQL*Plus или предыдущей страницей PHP можно проверить результат. Обратите внимание на то, что в приведенном примере никак не обрабатывается (а) блокировка строк, возможно мешающая вставке и (б) возможный конфликт первичного ключа.

Oracle, да не только

Как говорилось выше, PHP имеет функции обращения к данным отнюдь не только в Oracle. Наличие этих функций дает возможным использования этого инструмента достаточно экзотично, например для переноса данных между Oracle и другими системами. Например, нередко стоит задача переноса из формата dbf в БД под управлением Oracle или наоборот. Вот как ее можно решить «на коленке». Обратите внимание, что перенос инициируется из окошка браузера, а выполняется целиком на узле web.

Составим файл dbase.php:

<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>

Обратимся по адресу: http://localhost/dbase.php. В корневом каталоге с: должен появиться файл fromoracle.dbf с данными, полученными из Oracle. Обратное преобразование можно проделать в качестве упражнения.

Таким же образом можно обращаться к mySQL, PostgreSQL, Sybase, SQL Server и другим системам управления данными и по ODBC.

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS