2015-01-08 6 views
1

У меня есть база данных Oracle, к которой я пытаюсь подключиться.Подключение к базе данных Oracle из PHP

По какой-то причине, когда я пытаюсь следующий код:

<?php 
    include "header.php"; 
    // simply attempt to connect to the database 
    /* If you are connecting to the Oracle database, the credentials are as follows: 
    * Username: ******** 
    * Password: ******** 
    * Hostname: ********** 
    * Port: 1521 
    * Service name: *********** 
    */ 
    $oracleConnect = true; 
    if ($oracleConnect) 
    { 
     echo 'Attempting connection...<br>'; 
     $connection = null; 
     try 
     { 
      $connection = oci_connect('user', 
       'pass', 
       '[email protected]//hostname:1521/dbname'); 
     } 
     catch (Exception $e) 
     { 
      echo $e->getMessage(); 
     } 
     if (!$connection) 
     { 
      echo '<p>Something is wrong.</p>'; 
      $e = oci_error(); 
      trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); 
     } 
     // if the connection has been established 
     else 
     { 
      // tell the user and close it (this is a test) 
      echo 'Connection established!!'; 
      oci_close($connection); 
     } 
    } 
    else 
    { 
     $connection = new mysqli('host', 'user', 'password', 'database'); 
     echo ($connection) ? 'Database connection successful!' : 'Could not connect.'; 
    } 
    include "footer.php"; 
?> 

Когда я пытаюсь выше код, я получаю «Попытка соединения ...» для печати, но ничего. Он должен печатать что-то другое независимо. Что может быть неправильным?

+1

Повторите что-нибудь в 'try', чтобы убедиться, что процесс введен. Добавьте отчет об ошибках в начало файла (ов) сразу после открытия '

ответ

0

Я думаю, что проблема заключается в том, что ваша строка подключения содержит [email protected]. Я не думаю, что это необходимо, поскольку oci_connect имеет параметр имени пользователя. Я мог бы быть неправильно, я никогда не использовал оракул из PHP раньше, но the docs on oci connections также, казалось бы, показывают, что:

To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Service names can be found by running the Oracle utility lsnrctl status on the database server machine.

Также oci_connect не бросает исключение, насколько я могу сказать, так что ваша попытка/улов бесполезно, если вы планировали бросить свой собственный, когда он вернется false.

+0

ОК, поэтому я достал часть' user @ ', а также блок try/catch, и он все еще не работает! Вот тестовый сайт: http://dinotator.biokdd.org/ResearchProject/dbConnect.php –

+1

Включите display_errors как @JayBlanchard, который предлагается в его комментарии, и посмотрите, есть ли там ... также, когда нет соединения try 'print_r ($ e) 'вместо вашего форматирования, чтобы увидеть ... вы могли бы что-то прищурить там. потому что он никогда не делает его включенным для нижнего колонтитула ... что означает ошибку, которая останавливает обработку. И это наиболее вероятное место. – prodigitalson

+0

oci_connect() был «undefined»! 'Неустранимая ошибка: вызов неопределенной функции oci_connect() в /home1/biokddor/public_html/dinotator/ResearchProject/dbConnect.php в строке 17' –

Смежные вопросы