Базы данных 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 и обратимся по адресу .

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

Вот пример вставки записи в БД.  Данные передаются через строку запроса 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 и обратимся по адресу .  В SQL*Plus или предыдущей страницей PHP можно проверить результат.  Обратите внимание на то, что в приведенном примере никак не обрабатывается (а) блокировка строк, возможно мешающая вставке и (б) возможный конфликт первичного ключа.



Содержание раздела