Oracle / PHP FAQ
Что такое PHP и что необходимо иметь для работы с Oracle?
PHP - рекурсивный акроним "PHP Hypertext Preprocessor". Это интерпретируемый язык программирования с открытым исходным кодом. Он предназначен для генерации веб-документов на сервере.
Этот документ описывает, как PHP взаимодействует с базой данных Oracle. Подразумевается, что у Вас уже установлен и настроен PHP. Проверить его работоспособность можно следующим скриптом:
If PHP is working, you will see "Hello World" below:
php
echo "Hello world";
phpinfo(); // Print PHP version and config info
?>
Попробуйте выполнить этот код из командной строки либо откройте тестовую страницу в Вашем браузере. Если приведенный выше пример не работает, отложите этот документ и добейтесь корректной работы PHP.
В чем разница между модулями OCI и ORA?
В дистрибутив PHP входят два модуля, предназначенных для работы с PHP:
* Стандартные Oracle-функции (ORA)
* Интерфейс для доступа к функциям Oracle (OCI)
Если есть возможность выбора, предпочтение стоит отдать модулю OCI, так как он более оптимизирован и имеет большую функциональность. К примеру, модуль ORA не поддерживает CLOB, BLOB, BFILE, ROWID.
Как собрать PHP с поддержкой Oracle?
Для того, что бы получить работоспособную связку PHP & Oracle, необходимо выполнить следующие шаги:
* Скачать дистрибутив PHP с официального сайта www.php.net, установить его на сервер и убедиться в его работоспособности
* Установить клиент Oracle на Ваш сервер и настроить подключение к Вашей базе данных
* Если у Вас Windows-сервер, раскомментируйте следующие строки в файле php.ini:
;extension = php_oci8.dll
;extension = php_oracle.dll
Также убедитесь в том, чтобы extension_dir указывала на директорию, содержащую указанные модули.
Если у Вас Linux-сервер, пересоберите PHP с одной из опций:
--with-oracle=/path/to/oracle/home/dir
--with-oci8=/path/to/oracle/home/dir
* Напишите небольшой тестовый скрипт, чтобы убедится в том, что установка завершилась успешно. В качестве тестового скрипта можно взять пример из следующего вопроса.
Как подключится к базе данных?
Если вы используете модуль OCI, воспользуйтесь следующим кодом:
if ($c=OCILogon("scott", "tiger", "orcl")) {
echo "Successfully connected to Oracle.n";
OCILogoff($c);
} else {
$err = OCIError();
echo "Oracle Connect Error " . $err[text];
}
?>
Если вы используете модуль ORA, попробуйте следующее:
if ($c=ora_logon("scott@orcl","tiger")) {
echo "Successfully connected to Oracle.n";
ora_commitoff($c);
ora_logoff($c);
} else {
echo "Oracle Connect Error " . ora_error();
}
?>
Замечание: если у Вас не установлены необходимые переменные окружения, поместите следующие строки в начале каждого скрипта, работающего с Oracle:
PutEnv("ORACLE_SID=ORCL");
PutEnv("ORACLE_HOME=/app/oracle/product/9.2.0");
PutEnv("TNS_ADMIN=/var/opt/oracle");
В случае, если Вы несколько раз в пределах одного скрипта попробуете подключится к базе данных, используя одинаковую комбинацию логин/пароль, Вы получите одно и то же соединение. Если Вам необходимы различные подключения к базе, используйте функцию OCINLogon(). Если вам нужны постоянные соединения, используйте функцию OCIPLogon().
Почему возникает ошибка "Call to undefined function: ora_logon()/ ocilogon()"?
Вероятнее всего, у Вас не включена поддержка Oracle. Вернитесь к вопросу "Как собрать PHP с поддержкой Oracle?". Вам необходимо пересобрать php, если у Вас Linux или раскомментировать загрузку соответствующей библиотеки, если у вас Windows.
Как выполнять запросы SELECT, INSERT, UPDATE и DELETE посредством PHP?
Приведенный ниже исходный код демонстрирует, как удалять/создавать новые таблицы, записывать/извлекать из них данные в PHP.
$c=OCILogon("scott", "tiger", "orcl");
if ( ! $c ) {
echo "Невозможно подключится к базе: " . var_dump( OCIError() );
die();
}
// Удаляем старую табоицу
$s = OCIParse($c, "drop table tab1");
OCIExecute($s, OCI_DEFAULT);
// Создаем новую таблицу
$s = OCIParse($c, "create table tab1 (col1 number, col2 varchar2(30))");
OCIExecute($s, OCI_DEFAULT);
// Заносим строку в только что созданную таблицу
$s = OCIParse($c, "insert into tab1 values (1, 'Frank')");
OCIExecute($s, OCI_DEFAULT);
// Заносим данные в таблицу используя конструкцию "bind"
$var1 = 2;
$var2 = "Scott";
$s = OCIParse($c, "insert into tab1 values (:bind1, :bind2)");
OCIBindByName($s, ":bind1", $var1);
OCIBindByName($s, ":bind2", $var2);
OCIExecute($s, OCI_DEFAULT);
// Производим выборку из базы данных
$s = OCIParse($c, "select * from tab1");
OCIExecute($s, OCI_DEFAULT);
while (OCIFetch($s)) {
echo "COL1=" . ociresult($s, "COL1") .
", COL2=" . ociresult($s, "COL2") . "n";
}
// Выполняем commit;
OCICommit($c);
// Отключаемся от базы данных
OCILogoff($c);
?>
Как получить доступ к механизму транзакций из PHP?
При использовании модуля OCI каждый раз после удачного выполнения ociexecute() автоматически происходит commit, и, таким образом, транзакция сразу же завершается. Вы можете управлять этим процессом, указывая дополнительный параметр OCI_COMMIT_ON_SUCCESS либо OCI_DEFAULT при вызове функции ociexecute(). В случае использования OCI_DEFAULT вы сможете полностью управлять механизмом транзакций, для этого используйте функции OCICommit() и OCIRollback().
Следует учесть, что использование OCI_DEFAULT в одном из вызовов ociexecute() автоматически наследуется для всего подключения к базе данных и будет использовано при дальнейших операциях с базой данных. Если вы не хотите использовать автоматический и ручной механизм управления транзакциями одновременно, используйте OCINLogon().
В случае, если Вы используете модуль ORA, управление транзакциями выглядит немного иначе. Используйте функции ORA_CommitOn() и ORA_CommitOff() для переключения между ручным и автоматическим механизмом управления транзакциями. Для завершения транзакции и отката используйте функции ORA_Commit() и ORA_Rollback() соответственно.
В случае, если после завершения работы скрипта ни разу не выполнялся ни commit, ни rollback, PHP завершит транзакцию командой commit.
Как корректно обрабатывать возникающие ошибки?
В случае, если вы используете модуль OCI, используйте функцию OCIError() для получения массива, содержащего детальную информацию о возникающих ошибках. Если подключений несколько, OCIError() позволяет получить информацию об ошибке в каждом их них индивидуально. Если данная функция вызывается без параметров, она возвращает массив с информацией о последней произошедшей ошибке.
$err = OCIError();
var_dump($err);
print "nError code = " . $err[code];
print "nError message = " . $err[message];
print "nError position = " . $err[offset];
print "nSQL Statement = " . $err[sqltext];
?>
В случае, если вы используете модуль ORA, воспользуйтесь функциями ora_error() и errorcode() для получения информации о последней произошедшей ошибке.
print "nError code = " . ora_errorcode();
print "nError message = " . ora_error();
?>
Как вызвать из PHP хранимую процедуру?
Приведенный ниже пример демонстрирует создание и вызов хранимой процедуры.
// Подключаемся к базе данных
$c=OCILogon("scott", "tiger", "orcl");
if ( ! $c ) {
echo "Unable to connect: " . var_dump( OCIError() );
die();
}
// Создаем хранимую процедуру
$s = OCIParse($c, "create procedure proc1(p1 IN number, p2 OUT number) as " .
"begin" .
" p2 := p1 + 10;" .
"end;");
OCIExecute($s, OCI_DEFAULT);
// Вызываем процедуру
$in_var = 10;
$s = OCIParse($c, "begin proc1(:bind1, :bind2); end;");
OCIBindByName($s, ":bind1", $in_var);
OCIBindByName($s, ":bind2", $out_var, 32); // 32 is the return length
OCIExecute($s, OCI_DEFAULT);
echo "Procedure returned value: " . $out_var;
// Отключаемся от базы данных
OCILogoff($c);
?>
|
Что такое PHP и что необходимо иметь для работы с Oracle?PHP - рекурсивный акроним PHP Hypertext Preprocessor. Это интерпретируемый язык программирования с открытым исходным кодом. Он предназначен |
РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2026-03-04 » Скорость, ИИ и человекоцентричность: каким должен быть сайт в 2026 году
- 2026-03-03 » Как искусственный интеллект меняет таргетированную рекламу
- 2026-03-03 » Основные киберугрозы для бизнеса: 5 способов потерять (и сохранить) данные компании
- 2026-03-03 » Главные тренды веб-дизайна 2026 года: от гиперминимализма до кибербрутализма
- 2026-03-03 » Искусственный интеллект в маркетинге: помощник, а не замена человеку
- 2026-02-26 » Нулевая позиция в поиске: как на нее попасть и зачем это нужно
- 2026-02-26 » Как выбрать подрядчика для сайта и не попасть на мошенников
- 2026-02-26 » Инклюзивный клиентский опыт: как сделать бизнес доступным для всех и повысить конверсию
- 2026-02-26 » ESG-принципы: что это такое и как бизнесу внедрять их в свою работу
- 2026-02-26 » Почему в 2026 году маркетологу не стоит бояться искусственного интеллекта
- 2026-02-22 » No-code vs Профессиональная разработка: выстрелит ли Tilda в 2026 году?
- 2026-02-22 » Почему малый бизнес проигрывает в контекстной рекламе и при чем тут структура сайта
- 2026-02-22 » Куда уходит скорость: как мы теряем посетителей из-за одного "тяжелого" шрифта
- 2026-02-22 » Дарк-паттерны (Dark Patterns) в интерфейсах: когда манипуляция клиентом выходит боком
- 2026-02-22 » Голосовой поиск и веб: готов ли ваш сайт к разговору с Алисой и Марусей?
- 2026-02-22 » Микроанимация и UX/UI: как движение элементов влияет на конверсию
- 2026-02-22 » ИИ в веб-аналитике: как нейросети предсказывают отток клиентов до того, как они уйдут
- 2026-02-22 » Темная сторона шаблонов: почему сайт на готовом решении может угробить ваш бизнес
- 2026-02-22 » Зеленый хостинг и экология в IT: тренд или необходимость?
- 2026-02-22 » Веб-доступность (Accessibility): почему ваш сайт теряет до 20% клиентов и штрафует сам себя
- 2026-02-12 » Экономика фриланса vs веб-студии: скрытые издержки и риски при заказе сайта «у знакомого разработчика»
- 2026-02-12 » Инструменты аналитики помимо Google Analytics
- 2026-02-12 » Юридические аспекты владения сайтом
- 2026-02-12 » Сравниваем популярные CRM-системы для интеграции с сайтом
- 2026-02-12 » Эволюция интерфейсов: от CLI к GUI, к VUI и далее
- 2026-02-12 » Контент-стратегия после обновления Google Helpful Content
- 2026-02-12 » Headless-архитектура: модный тренд или необходимость для вашего бизнеса?
- 2026-02-12 » Мифы о кибербезопасности для малого и среднего бизнеса
- 2026-02-12 » Как Core Web Vitals влияют не только на SEO, но и на конверсию?
- 2026-02-12 » PWA vs Нативное приложение: что выбрать малому бизнесу в 2026?
Власть над собой — высшая власть. Луций Анней Сенека |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.

Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.