Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: Oracle 10g / PHP4.3.10 / Apache 2.0.53
Forum PHP.pl > Forum > Bazy danych > Oracle
matchor
Witam. Bardzo prosze powiedzcie mi w jakis sposob skonfigurowac php'a zebym mogl przez niego laczyc sie z baza danych oracle 10g. Chodzi mi o konfiguracje pod WinXp. Prosze rowniez - nie odsylajcie mnie do jakis zachodnich linkow gdzie opis jest pod linuksa. Napiszcie jakie biblioteki, skad, gdzie skopiowac cos dopisac w php.ini questionmark.gif HELP ME. sad.gif
SongoQ
Wydaje mi sie ze pod windowsa w php.ini trzeba tylko odkomentowac php_oci8.dll
matchor
odkomentowalem ...

ale ... co teraz?


Jak sie laczyc z baza questionmark.gif Jak uzywam funkcji ora_logon to mi wywala:

Call to undefined function: ora_logon() in D:.....


:/
SongoQ
Dla 10g uzywasz OCI a ne ORA.
matchor
jest gdzies opis tych polecen do laczenia sie ? do wywolywania zapytan questionmark.gif itd... questionmark.gif nie wiem jakie sa i z nakimi parametrami je wywolywac
SongoQ
http://pl.php.net/manual/pl/ref.oci8.php

Tam masz wszystko opisane, przyk³ad za przyk³adem.
Jesli nie bedziesz czegos wiedzial to pisz.
matchor
<?php

echo "1\n";
$c1 = ocilogon("system", "menager", "");
echo "2\n";
$qry = "select NR from uczen";
$stmt = ociparse($c1, $qry);
echo "----selecting\n\n";
while (ocifetch($stmt)) {
$a=ociresult($stmt, "NR") ;
echo $a;
}
echo $conn . "----done\n\n";

?>

wywolanie takiego skryptu zwraca mi
Warning: ocifetch(): OCIFetch: ORA-24338: nie by³ wykonany uchwyt instrukcji
i nie wyswietla zawartosci pola NR . DLACZEGO questionmark.gif
SongoQ
Po ociparse musisz jest wykonac ociexecute

Czyli
  1. <?php
  2. $stmt = ociparse($c1, $qry);
  3. $rQuery = ociexecute($stmt)
  4. ?>
matchor
I TAK NIC NIE WYSWIETLA ;(

echo "1\n";
$c1 = ocilogon("system", "menager", "");
echo "2\n";
$qry = "select NR from uczen";
$stmt = ociparse($c1, $qry);
$rQuery = ociexecute($stmt);

echo $stmt;

echo "----selecting\n\n";

while (ocifetch($stmt)) {
$a=ociresult($stmt, "IMIE") ;
echo $a;
}
echo $conn . "----done\n\n";


?>
SongoQ
  1. <?php
  2.  
  3. $rQuery = ociexecute($stmt);
  4. echo $rQuery;
  5. echo &#092;"----selectingnn\";
  6. while (ocifetch($rQuery)) {
  7. $a=ociresult($rQuery, &#092;"IMIE\");
  8. echo $a;
  9. ?>
matchor
NIC Z TEGO

Warning: ocifetch(): supplied argument is not a valid OCI8-Statement resource in
SongoQ
Napisze Ci jak to zrealizowalem krok po kroku.

  1. <?php
  2.  
  3.  
  4. // Laczenie
  5.  
  6. $db = &#092;"(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = \".$DATABASE_HOST.\")(PORT = \".$DATABASE_PORT.\")))(CONNECT_DATA=(SID=\".$DATABASE_SID.\")))\";
  7. $szConnection = ocilogon ($DATABASE_USER, $DATABASE_PASS, $db);
  8.  
  9. // Zapytanie wyglada tak
  10. $s = OCIParse($szConnection, 'Zapytanie xxxxxxxxxx ');
  11. $rQuery = OCIExecute($s, OCI_DEFAULT);
  12.  
  13. // Pobieranie wynikow
  14. while(OCIFetch($rQuery))
  15. echo OCIResult($rQuery, &#092;"Pole\");
  16.  
  17.  
  18. ?>


I co najwazniejsze takie cos dziala. Sprawdz to jesli Ci nie zadziala to pisz.
A za kazdym wywolaniem sparwdzaj czy Ci zwraca resource.
matchor
sory ze tak truje i dzieki za cierpliwosc . ale ...
nadal to samo sad.gif

Kod
Warning:  ocifetch(): supplied argument is not a valid OCI8-Statement resource in D:\Program Files\Apache Group\Apache2\htdocs\moje\test2.php on line 30


stronka wyglada tak sad.gif :

  1. <!DOCTYPE html PUBLIC \" - //W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transtional.dtd\">
  2. <xhtml xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
  3. <head>
  4. <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\" />
  5. <title> Informacje zwrotne </title>
  6. </head>
  7. <body>
  8. sdfsafsadf
  9. <pre>
  10. <?php 
  11.  
  12. echo &#092;"1n\";
  13.  $c1 = ocilogon(&#092;"system\", \"menager\", \"\");
  14.  echo &#092;"n\";
  15. echo $c1;  
  16. $qry = &#092;"select * from uczen\";
  17.  echo &#092;"n\";
  18. echo $qry;
  19. $stmt = ociparse($c1, $qry);
  20.  echo &#092;"n\";
  21. echo $stmt;
  22.  
  23. $rQuery = ociexecute($stmt);
  24. echo $rQuery;
  25.  
  26.  echo &#092;"n\";  
  27.  
  28. echo &#092;"----selectingnn\";
  29.  
  30.  while (ocifetch($rQuery)) {
  31.  echo ociresult($rQuery, &#092;"IMIE\");
  32. }
  33.  
  34. echo &#092;"----donenn\";
  35.  
  36.  
  37. ?>
  38. </pre>
  39. </body>
  40. </html>



a po wywolaniu wyswietla tak:

Kod
sdfsafsadf

1

Resource id #4
select * from uczen
Resource id #51
----selecting



Warning:  ocifetch(): supplied argument is not a valid OCI8-Statement resource in D:\Program Files\Apache Group\Apache2\htdocs\moje\test2.php on line 30

----done
SongoQ
Ja tu widze jeden problem. Jesli zapytanie poprawnie zwraca to cos jest nie tak z ocifetch bo funcja ta zwraca tablice rekordu. Moze cos masz nie tak z biblioteka. Napisz jaka wersja php? I sprawdz co zwraca zapytanie.
matchor
dzieki wielkie

  1. <?php
  2. $stmt = ociparse($c1, &#092;"select * from uczen\");
  3. ociexecute($stmt, OCI_DEFAULT);
  4. echo $conn.&#092;"----selectingnn\";
  5. while (ocifetch($stmt)) {
  6. echo ociresult($stmt, &#092;"IMIE\").\"t\";
  7. echo ociresult($stmt, &#092;"NAZWISKO\").\"n\";
  8. }
  9. echo $conn . &#092;"n----donenn\";
  10. ?>


takie cos zadzialalo :/ nie rozumiem pewnych rzeczy no ale ...

teraz mam inny problem :/

do bazy chce dodac pobrane wartosci z formularza ze strony poprzedniej. Zmienne wyswietla dobrze ale ich nie dodaje do bazy
  1. <?php
  2.  
  3. $z1 = $_POST['nr'];
  4. $z2 = $_POST['imie'];
  5. $z3 = $_POST['imie2'];
  6. $z4 = $_POST['nazwisko'];
  7. $z5 = $_POST['data_ur'];
  8. $z6 = $_POST['miejsce_ur'];
  9. $z7 = $_POST['woj_ur'];
  10. $z8 = $_POST['przyjeto_w_roku_szkolnym'];
  11. $z9 = $_POST['ulica'];
  12. $z10 = $_POST['nr_domu'];
  13. $z11 = $_POST['kod_pozctowy'];
  14. $z12 = $_POST['miejscowosc'];
  15. $z13 = $_POST['woj'];
  16.  
  17. $query = &#092;"insert into uczen values ($z1 , $z2 , $z3 , $z4 , $z5 , $z6 , $z7 , $z8 , $z9 , $z10 , $z11 , $z12 , 
    $
  18. 13)\";
  19. $stmt = ociparse($c1, $query); 
  20. ociexecute($stmt, OCI_DEFAULT);
  21. echo \"--inserted n\";
  22. ocicommit($c1);
  23. ?>



wartosci w linijce:

  1. <?php
  2. $query = &#092;"insert into uczen values ($z1 , $z2 , $z3 , $z4 , $z5 , $z6 , $z7 , $z8 , $z9 , $z10 , $z11 , $z12 , 
    $
  3. 13)\";
  4. ?>
z ' ' tez probowalem
SongoQ
Cytat
takie cos zadzialalo :/ nie rozumiem pewnych rzeczy no ale ...

Wydobylem teraz klase z CVSa w ktorej to realizowalem no i faktyczenie ofitech potrzebuje resorce z ociparse a nie ociexecute. Sorki ze Cie w blad wprowadzielm.

A z tym ponizej zapytaniem dostajesz jakis komunikat bledu czy sie poprostu nie dodaje do bazy? W zapytaniu stringi maja byc w ''.
matchor
OK juz mam. uszy pomogly i glupi blad wczesniej. Dzieki
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.