За последние 24 часа нас посетили 17788 программистов и 1625 роботов. Сейчас ищут 1320 программистов ...

PHP и ORACLE

Тема в разделе "Oracle Database", создана пользователем patrick1968, 26 июн 2006.

  1. patrick1968

    patrick1968 Активный пользователь

    С нами с:
    26 июн 2006
    Сообщения:
    6
    Симпатии:
    0
    Подскажите, пожалуйста, что-то никак не могу понять одну простую вещь, вообщем есть запрос к Ораклу

    примерно так
    SELECT *
    FROM TABLE1
    WHERE ...
    and TABLE1.FIELD1 IS NOT NULL - одно из ключевых условий
    ...

    выполняю в SQL Navigator - работает как часы - вадает то, что надо, затем пытаюсь перетащить в WEB

    $conn = ora_logon($USER."@".$ALIAS, $PASSWORD');
    $curs = ora_open($conn);
    ora_commitoff($conn);

    if (!ora_parse($curs, $query)) die("Ошибка выполнения запроса. Повторите еще раз.") ;
    ora_exec($curs);

    while ( ora_fetch($curs) ) {
    ...
    }

    В итоге курсор получается пустой.
    Просто даже неясно, где искать ошибку.
     
  2. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Простой пример из мануала
    <?php
    /* oci_fetch_all example mbritton at verinet dot com (990624) */

    $conn = oci_connect("scott", "tiger");

    $stmt = oci_parse($conn, "select * from emp");

    oci_execute($stmt);

    $nrows = oci_fetch_all($stmt, $results);
    if ($nrows > 0) {
    echo "<table border=\"1\">\n";
    echo "<tr>\n";
    while (list($key, $val) = each($results)) {
    echo "<th>$key</th>\n";
    }
    echo "</tr>\n";

    for ($i = 0; $i < $nrows; $i++) {
    reset($results);
    echo "<tr>\n";
    while ($column = each($results)) {
    $data = $column['value'];
    echo "<td>$data[$i]</td>\n";
    }
    echo "</tr>\n";
    }
    echo "</table>\n";
    } else {
    echo "No data found<br />\n";
    }
    echo "$nrows Records Selected<br />\n";

    oci_free_statement($stmt);
    oci_close($conn);
    ?>
     
  3. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Да, чуть не забыл, если на сервере Oracle работает несколько
    инстанций, то перед использованием oci_connect, следует указать к какой из них ты
    подключаешься, примерно так

    $db="(DESCRIPTION=
    (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=TCP)
    (HOST=IP Адрес сервера Oracle)(PORT=1521)
    )
    )
    (CONNECT_DATA=(SERVICE_NAME=Имя Инстанции)(SERVER = DEDICATED))
    )";

    И у же oci_connect вызывать с третип параметром
    $conn = oci_connect("scott", "tiger", $db);
     
  4. Maximus

    Maximus Активный пользователь

    С нами с:
    10 мар 2007
    Сообщения:
    1
    Симпатии:
    0
    Адрес:
    Perm
    Goryn, из какого мануала?
     
  5. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
  6. Mayof_Filatoff

    Mayof_Filatoff Активный пользователь

    С нами с:
    1 апр 2007
    Сообщения:
    7
    Симпатии:
    0
    Добрый день !
    У меня иногда при выполнении цикла по курсору
    выскакивает ошибка "Инвалид курсор". А если попробовать обновить страницу, то ошибка исчезает и всё проходит нормально... Иногда так часто происходит, иногда редко... В какую сторону копать, что подкрутить, поднастроить ?
     
  7. Anonymous

    Anonymous Guest

    Mayof_Filatoff, версия PHP и OC какая ?
     
  8. Mayof_Filatoff

    Mayof_Filatoff Активный пользователь

    С нами с:
    1 апр 2007
    Сообщения:
    7
    Симпатии:
    0
    PHP 5.2.0, скачаный тут, а стоит на 2003-х окнах, Апач 2-й
     
  9. Anonymous

    Anonymous Guest

    Mayof_Filatoff. А. Это проблема виндовой версии OCI библиотечки в PHP5. Тебе надо вот это скачать, и или библиотечки выдрать из него и заюзать, либо оставить весь комплекс(как мы и сделали).
     
  10. Zed

    Zed Активный пользователь

    С нами с:
    11 апр 2007
    Сообщения:
    2
    Симпатии:
    0
    ОС: WinXP SP2;
    Apache 1.3.37
    PHP 5.2.1
    Установлен Клиент Oracle 9.2 и InstantClient_10_2 (ввиде oci.dll, ociw32.dll, ocijdbc10.dll, oraociei10.dll)

    Переменные окружения
    path=C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; C:\Program Files\Private Shell;c:\instantclient_10_2;

    Oracle_home=c:\instantclient_10_2
    nls_lang=AMERICAN_AMERICA.CL8MSWIN1251
    oracle_sid=dbname
    LD_LIBRARY_PATH=C:\instantclient_10_2


    phpinfo пишет
    oci8
    OCI8 Support enabled
    Version 1.2.3
    Revision $Revision: 1.269.2.16.2.32 $
    Active Persistent Connections 0
    Active Connections 0
    Temporary Lob support enabled
    Collections support enabled

    Directive Local Value Master Value
    oci8.default_prefetch 10 10
    oci8.max_persistent -1 -1
    oci8.old_oci_close_semantics 0 0
    oci8.persistent_timeout -1 -1
    oci8.ping_interval 60 60
    oci8.privileged_connect Off Off
    oci8.statement_cache_size 20 20

    при выполнении скритпа
    <?
    $conn=ocilogon('user','pass','dbname');
    ?>
    выдает

    Warning: ocilogon() [function.ocilogon]: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in D:\WWW\1\1.php on line 2

    Подскажите чего ему не хватает.
     
  11. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Обожаю подобные сообщения об ошибках :D "смините моск!" (с) Абсурдопедия
     
  12. Zed

    Zed Активный пользователь

    С нами с:
    11 апр 2007
    Сообщения:
    2
    Симпатии:
    0
    Вот хоть какая-то подсказка.
    Теперь хотелось бы по конкретнее.

    в переменной PATH указаны ВСЕ места где присутствует Oracle
     
  13. Mayof_Filatoff

    Mayof_Filatoff Активный пользователь

    С нами с:
    1 апр 2007
    Сообщения:
    7
    Симпатии:
    0
    Скачал... Весчь красивая... Только жалуется теперь, что odbc_connect() - неизвестная функция
     
  14. Mayof_Filatoff

    Mayof_Filatoff Активный пользователь

    С нами с:
    1 апр 2007
    Сообщения:
    7
    Симпатии:
    0
    Скопировал настройки с одного сервера на другой, пути поисправлял, но всё равно выдаёт ошибку:
    Warning: ocilogon() [function.ocilogon]: _oci_open_server: ORA-12560: TNS:protocol adapter error in ...
    Средствами клиента Оракла проверял - к базе коннектится без проблемм, а тут такое...
     
  15. shredder2003

    shredder2003 Активный пользователь

    С нами с:
    27 ноя 2007
    Сообщения:
    1
    Симпатии:
    0
    Такое же сообщение об ошибке выдавалось, оракл XE клиент.
    Когда в файле php.ini закомментил строку
    extension php_oracle.dll
    то работает.
    т.е. две библиотечки (oracle и oci8) одновременно не работают.
    Точнее, oci8 не работает, если подключена oracle.