Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Oracle][PHP] Jak się połączyc ?
Forum PHP.pl > Forum > Przedszkole
vander1989
Witka:)
mam bazę danych u siebie na pc i chciałbym się z nią połączyć niestety jakos idzie mi to nie za bardzo mam taki oto kod
  1. <?php
  2. putenv('ORACLE_SID=orcl');
  3.  
  4. $foo=exec("echo %ORACLE_SID%");
  5. // echo $foo;
  6.  
  7. $connection = OCILogon("user","haslo","orcl")
  8. or die("Couldn't logon to database.");
  9. OCILogoff($connection);
  10. ?>
  11.  
  12.  


uczywiscie hasło i usera mam swojego smile.gif i ni w ząb nic mi sie tu ciekawego nie pojawia smile.gif to chyba nie najleiej ? albo moglibyscie przerobic tak zeby pisało iz sie połączyłem? czy moze źle zupelnie się łącze?
piotrekkr
hmm a nie potrzebujesz czasem uzytkonika i hasła? Taki przykład znalazłem na http://www.orafaq.com/wiki/PHP_FAQ#How_doe...ct_to_Oracle.3F

  1. if ($c = oci_connect("hr", "hr_password", "localhost/XE")) {
  2. echo "Successfully connected to Oracle.";
  3. oci_close($c);
  4. } else {
  5. $err = oci_error();
  6. echo "Oracle Connect Error " . $err['text'];
  7. }
  8.  
vander1989
hasło daje i usera takze i localhost to ma zostac taki jak jest? tzn bez XE ? czy jak?
piotrekkr
No nie wiem gdzie masz to połączenie z serwera zajrzyj tutaj: http://pl.php.net/manual/en/function.oci-connect.php jest opis w jaki sposób można się łączyć z oracle. Z tego co widziałem możesz użyć tego:

  1. putenv('ORACLE_SID=orcl');


a potem pominąć trzeci argument oci_connect() czyli cos takiego:

  1. putenv('ORACLE_SID=orcl');
  2. if ($c = oci_connect("hr", "hr_password")) {
  3. echo "Successfully connected to Oracle.";
  4. oci_close($c);
  5. } else {
  6. $err = oci_error();
  7. echo "Oracle Connect Error " . $err['text'];
  8. }


Tak pisze w manualu, ale nie jestem pewien do końca bo nie używałem oracle.
Pilsener
Możesz przyczynić się do rozwoju PDO i przetestować to:
http://php.net/manual/pl/ref.pdo-oci.php
vander1989
  1. <?php
  2. putenv('ORACLE_SID=orcl');
  3.  
  4. if ($c = oci_connect("system", "ala_ma_kotka")) {
  5.  
  6. echo "Successfully connected to Oracle.";
  7.  
  8. oci_close($c);
  9.  
  10. } else {
  11.  
  12. $err = oci_error();
  13.  
  14. echo "Oracle Connect Error " . $err['text'];
  15.  
  16. }
  17. ?>
  18.  
  19.  


o kompletnie nic mi nie wyskakuje powinien błąd się pokazać ale niestety nic nie ma:(

Poczytałem i prawdopodbnie mam problem z oci_ wiecie moze jak to doinstalować? bo tez kombinuje i idzie mi jak krew z nosa:(
jacusek
Być może nie masz zainstalowanych bibliotek oci8.
Znajdź w php.ini taką linijkę
;extension=php_oci8.dll
i skasuj średnik na początku. No i później oczywiście zresetuj serwer.
Ewentualnie spróbuj w ten sposób:
  1. IF ($c = @oci_connect('user', 'haslo', 'host:1521/nazwa_instancji'))
  2. {
  3. // Wyświetl komunikat o udanym połączeniu.
  4. echo "Udane połączenie z bazą danych Oracle.<br />";
  5. // Rozłącz się.
  6. oci_close($c);
  7. }
vander1989
Możesz wyjaśnić pojęcie nazwa_instancji?
jacusek
no inaczej nazwa bazy danych. zwykle przy instalacji, jeżeli nic nie zmieniasz w Oraclu to jest to orcl.
TO jest dokładnie to ORACLE_SID.

vander1989
  1. <?php
  2.  
  3. IF ($c = @oci_connect('system', 'haslo', 'host:1521/orcl'))
  4.  
  5. {
  6.  
  7. // Wyświetl komunikat o udanym połączeniu.
  8.  
  9. echo "Udane połączenie z bazą danych Oracle.<br />";
  10.  
  11. // Rozłącz się.
  12.  
  13. oci_close($c);
  14.  
  15. }
  16.  
  17. ?>
  18.  
  19.  


czyli mam dokładnie taki plik questionmark.gif
i niestety nic mi to nie pomaga to z oci8 zmieniłem sad.gif można jakos inaczej to podejść?
jacusek
to miał być plik do sprawdzenia czy masz połączenie.
możesz spróbować dodać coś takiego
  1. <?php
  2. // Spróbuj połączyć się z bazą danych, używając podanego loginu i hasła oraz aliasu TNS.
  3. $db ='
  4. (
  5. DESCRIPTION=
  6. (
  7. ADDRESS=
  8. (PROTOCOL=TCP)
  9. (HOST="tu_wpisujesz_nazwe_hosta")
  10. (PORT=1521)
  11. )
  12. (
  13. CONNECT_DATA=
  14. (SID=ORCL)
  15. )
  16. )';
  17.  
  18. if ($c = @oci_connect('user', 'haslo', $db))
  19. {
  20. echo "Udane połączenie z bazą danych Oracle.<br />";
  21. // Rozłącz się.
  22. oci_close($c);
  23. }
  24. else
  25. {
  26. // Pobierz informacje o błędzie parsowania.
  27. $errorMessage = oci_error();
  28. // Otwórz tabelę HTML.
  29. print '<table border="1" cellpadding="0" cellspacing="0">';
  30. // Wyświetl elementy tablicy.
  31. foreach ($errorMessage as $name => $value)
  32. print '<tr><td>'.$name.'</td><td>'.$value.'</td></tr>';
  33. // Zamknij tabelę HTML.
  34. print '</table>';
  35. }
  36. ?>

TO już chyba całość. U mnie działa. Jeżeli masz wątpliwości możesz spróbować zalogować się na defaultowego użytkownika scott i spróbować pobrać jakieś dane z jego tabeli.
vander1989
kuu.... biała goraczka o krok .... to jest jakas masakra ! nic totalnie nic sie nie pojawia jakiego ja mam hosta moze to pisze źle?? mam oracla 11g nic nie zmieniałem mam go na pc swoim
jacusek
Informacje na temat hosta masz w takim pliku tnsnames.ora (wyszukaj plik)
Poza tym zadawałeś jakieś pytania do Oracla? Na pewno On Ci działa?? Bo chyba nie masz postawionej bazy. Zacznij od tego.
Żeby działał Oracle musisz mieć w usługach (przynajmniej tak jest w Windows) sprawdzić czy działają Ci procesy Oracla i Listenera.
Jak jest w Linuxie nie wiem niestety bo tu moja wiedza nie sięga.
vander1989
oracle działa bo sobie pisze ładnie w sql toolsie i wszystko smiga sad.gif a to nic nadal nie pomogło sad.gif
_Magus_
Mam podobny problem - sqlplus dziala (choc tylko w katalogu instant cleinta), a w php kiszka do potegi.
oci_connect zwraca false, a potem oci_error tez false - kompletnie nie wiem jak to ugryzc sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.