подключение к ораклу через php

Тема в разделе "PHP", создана пользователем unsiker, 3 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. unsiker

    unsiker

    Регистр.:
    6 июн 2008
    Сообщения:
    465
    Симпатии:
    172
    В сети установлен Оракл 9і. Поставили в сети дополнительный сервер под управлением win 2003. Стоит задача: написать на php небольшой скрипт для выборки данных из ORACLE 9 + прикрутить к нему веб интерфейс. Установил на сервак Апач, PHP (c подержкой OCI8) и Oracle CLient 10g Express Edition.

    phpinfo() выводит:
    __________________________
    OCI8 Support enabled
    Version 1.2.5
    Revision $Revision: 1.269.2.16.2.44 $
    Active Persistent Connections 0
    Active Connections 0
    Temporary Lob support enabled
    Collections support enabled
    ___________________________

    Столкнулся с проблемой подключения из PHP скрипта к ораклу. Пишу:
    ___________________________
    $host = "moy_host"; // Имя машины, где размещена СУБД Oracle
    $sid = "moy_sid"; // Имя сервиса(SID, SERVICE_NAME) экземпляра СУБД Oracle
    $port = 1521 ; // Порт для работы с СУБД ORACLE
    $db_user = "moy_user";
    $db_psw = "moy_pass";
    $dsn = oci_connect($db_user, $db_psw, "(DESCRIPTION =
    (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
    (HOST = $host)(PORT = $port)))
    (CONNECT_DATA = (SID = $sid)))");
    if ( ! $dsn ) {
    echo "Невозможно подключится к базе " ;
    die();
    }

    При этом все время получаю сообщение что невозможно законектится к базе. Подскажите в чем проблема? как правильно подключатся к ораклу из PHP?
     
  2. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    http://oracle.ukrsat.com/news/oracle342.html Вот ссылка на хорошую статью про работу с Oracle с помощью php. Плюс в этой статье очень простые и хорошие примеры.
    Для обзора статей про php+oracle думаю может подойти вот такой запрос
    http://yandex.ru/yandsearch?text=php+oracle&stpar2=%2Fh1%2Ftm17%2Fs3&stpar4=%2Fs3&stpar1=%2Fu1&stpar3=%2Fk1%2Ftc10%2Fnc1&lr=187
     
  3. alextet

    alextet Создатель

    Регистр.:
    22 мар 2007
    Сообщения:
    27
    Симпатии:
    2
    Если через OCI8 то у меня для коннекта к Ораклу стоит всего одна строчка
    $c=ocilogon("имя_пользователя", "пароль", "Имя_БД");
    Для этого должен быть правильно настроен на этом сервере Оракл Клиент и в нем прописан "Имя БД" на сколько я помню.

    Можно также через библиотеку ADODB работать с Оракл.
    define ("ORA_DSN", "oci8://пользователь:пароль@хост_сервера_БД/?nls_date_format=dd.mm.yyyy hh24:mi:ss");
    $db = & ADONewConnection(ORA_DSN);
    В обоих случаях помню, что напрямую не получалось к хост серверу БД подключаться, нужно было алиасы создавать.
    Документация здесь - http://php.russofile.ru/ru/translate/sql/adodb01/
     
  4. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Используй Pdo_Oci и не парься.
     
  5. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Разве можно к експрес версии подключаться из вне??
    На сколько я помню только локально можно или я что-то путаю..
     
  6. Nikel2007

    Nikel2007 Писатель

    Регистр.:
    14 апр 2009
    Сообщения:
    8
    Симпатии:
    0
    Мой пример подключения

    Здрасте :)
    У меня ситуация такая же:
    Есть база оракля, на удаленном хосте, есть прога, которая к ней подключается. Нужно сделать веб-интерфейс с выводом инфы с базы (вывод инфы настраиваемый, например вывести всех юзеров, изменить в них данные и т.д.).
    Решение:
    <?php
    $desc = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = "твой хост") (PORT = "твой порт"))) (CONNECT_DATA = (SID = "твой SID")))";
    $c=OCILogon("Логин", "Пароль", $desc);
    $select = "SELECT * FROM TABLE";
    $s = OCIParse($c, $select);
    OCIExecute($s);
    OCIFetchStatement($s, $results); //Возвращаем значения в массив
    foreach ($results as $key => $value) {
    print "$key -> $value <br>";
    }
    ?>
    Но надо также помнить, что обычно возвращается массив многомерный и ассоциативный:)

    И еще один момент, для данного типа подключения, не нужен клент оракли на юзерской машине, нужны только библиотеки, подключенные к php oci8.dll (естественно надо раскоментировать строку в php.ini).
    Удачи!
     
Статус темы:
Закрыта.