Дата  Запланированые курсы
24.11 Linux-MP. Модульная программа «Архитектура и администрирование Linux»
24.11 Linux-LE. Основы архитектуры и администрирования Linux
26.11 Поисковая оптимизация (SEO)
26.11 Средства растровой графики. Adobe Photoshop
26.11 Управление проектами (MS Project)
27.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений (Группа II)
27.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений (Группа I)
28.11 CORTEX-M-MP. Введение в технологии разработки систем управления на базе МК с RISC ядром ARM Cortex-M
28.11 CORTEX-M-INTRO. Введение в современную микроконтроллерную технику
03.12 Трёхмерное моделирование. 3ds Max
03.12 Компьютерное проектирование в системе AutoCAD (базовый курс)
03.12 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
07.12 DEV-PY200. Объектно-ориентированное программирование на языке Python
10.12 Основы создания веб-сайтов. Adobe Dreamweaver
10.12 Поисковая оптимизация (SEO) для профессионалов
10.12 Средства векторной графики. Adobe Illustrator
12.12 Инструменты бизнес-анализа Microsoft Excel: PowerPivot, PowerView
12.12 CORTEX-M-RISC. RISC-архитектура ARM Cortex-M в микроконтроллерах
17.12 MOC-20762. Разработка баз данных SQL
17.12 Работа в MS Excel. Расширенные возможности
17.12 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
17.12 Adobe After Effects. Создание анимации и эффектов
09.01 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
16.01 CORTEX-M-STM32F. Семейство МК компании ST Microelectronics STM32Fxxx с вычислительным ядром ARM Cortex M3
19.01 Linux-LF. Расширенное администрирование ОС Linux
04.02 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
13.02 CORTEX-M-RTOS. Разработка управляющих программ для МК систем управления с использованием многозадачных ОС реального времени
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
20.03 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
Открыт набор на осенний семестр в Академию информатики для школьников Открыт набор на осенний семестр на программы второго высшего образования
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

PHP 5 + Oracle 10/11
piwite
#1 Оставлено : 20 мая 2012 г. 1:49:59(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 20.05.2012(UTC)
Сообщений: 2
Баллов: 9
Откуда: Питер

Установлены Apache 2.2 + PHP_5.2 в Сборке ZendServer
На серваке avalon.oracle.ru имеется аккаунт.
Вопрос...как связать Oracle и PHP ?
Нужен конкретный способ. Мунуалы все проштудировал, способы разные проверил и пришел к этому (взято с оф сайта):


<?php

$c = oci_connect("имя", "пароль", "хост:1521");$s = oci_parse($c, "select table_name from all_tables where owner = 'hr'");
$r = oci_execute($s);

echo "<table border='1'>\n";
$ncols = oci_num_fields($s);
echo "<tr>\n";
for ($i = 1; $i <= $ncols; ++$i) {
$colname = oci_field_name($s, $i);
echo " <th><b>".htmlentities($colname, ENT_QUOTES)."</b></th>\n";
}
echo "</tr>\n";

while (($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item!==null?htmlentities($item, ENT_QUOTES):"&nbsp;")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";

?>


подскажите в чем ошибка и как поправить.
Реклама
Mikhail.Buranov
#2 Оставлено : 22 мая 2012 г. 13:10:48(UTC)
Mikhail.Baranov

Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 07.10.2007(UTC)
Сообщений: 337
Баллов: 2,114,020
Мужчина
Откуда: Russia

Никогда не работал с ораклом, но что-то подсказывает, что стоит понатыкать в код вызов вот этой функции: www.php.net/manual/ru/function.oci-error.php
piwite
#4 Оставлено : 24 мая 2012 г. 2:56:37(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 20.05.2012(UTC)
Сообщений: 2
Баллов: 9
Откуда: Питер

ну, что могу сказать...
мои результаты немного продвинулись в сторону php + apache + oracle в работе с локальной версией.
Пока что не было возможности подключить все это добро к серваку.
Итак, что было сделано:
Да бы избежать ненужной волокиты с настройками я поставил ZEND CE (бесплатная версия сервака от ZEND php5.3 + apache)
И так, были установлены:
-ZEND CE
-Oracle 11g Express Edition (создана бд с именем HR)
-SQL Developer


Возможные проблемы c SQL Developer:
1) требует при входе java.exe
Лечение: поставить jdk (6, 7 версия) и указать путь на jdk/java.exe
2) ругается при входе в БД [Ошибка: ORA-28000: the account is locked]
Лечение: прописать в SQL Plus следующие строки:

conn sys/ваш_пароль as sysdba; //(по умолчанию для логина sys пароль sys)
alter user USER NAME account unlock; // где [USER NAME] - Имя заблокированного пользователя, в моем случае это HR
alter user USER NAME identified by PASSWORD; //устанавливаем пароль на HR.

Пробуем подключится.

Далее возможна ошибка ORA-00604
Лечится: ищем файл sqldeveloper\ide\bin\ide.conf
открываем при помощи блокнота и вставляем следующее:
AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

сохраняем изменения в файле

Перезапускаем SQL Developer и пробуем подключиться.

Теперь все-таки про взаимодействия локальной БД с PHP.


Создаем в Apache2\htdocs файлик test.php со следующим содержимым:

<?php

$c = oci_connect("HR", "HR", "localhost/xe"); //[HR] - имя бд, [HR] - пароль к требуемой БД, [localhost/xe] - хост БД
$s = oci_parse($c, "select table_name from all_tables where owner = 'HR'");
$r = oci_execute($s);

echo "<table border='1'>\n";
$ncols = oci_num_fields($s);
echo "<tr>\n";
for ($i = 1; $i <= $ncols; ++$i) {
$colname = oci_field_name($s, $i);
echo " <th><b>".htmlentities($colname, ENT_QUOTES)."</b></th>\n";
}
echo "</tr>\n";

while (($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item!==null?htmlentities($item, ENT_QUOTES):"&nbsp;")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";

?>

Если все выполнено было верно, то при вводе в браузере с предварительно запущенным Apache + PHP (в этом случае Zend Server CE) localhost/test.php вы сможете увидеть долгожданную табличку содержащую наименование всех таблиц в бд HR.

Весь код верен и проверен собственноручно. Надеюсь, что кому-то поможет.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.