Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql][php]Wyniki wywołania procedury w bazie do PHP
Mejdej
post 13.06.2010, 19:41:40
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.01.2010

Ostrzeżenie: (0%)
-----


Witam,

mam taki problem. Utworzyłem sobie w bazie procedurę, która mieli dużo rzeczy i wypluwa mi przetworzone wyniki w postaci takiej jak zwyczajne zapytanie. Gdy wywołuję ją z programu np. Mysql Query Browser to wszystko wygląda jak powinno. Wywołuję ją instrukcją "CALL nazwa_procedury();". Ale co zrobić by dobrać się do tych wyników wywołując to samo z PHP? Próbowałem wywołać to "mysql_query('CALL nazwa_procedury()');" ale nie wiem jak się dobrać do wyników.

Pozdrawiam
Mejdej


--------------------
porównanie lokat
Go to the top of the page
+Quote Post
smietek
post 13.06.2010, 21:15:30
Post #2





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


  1. $result = mysql_query('CALL nazwa_procedury()');

I w zmiennej $result masz wynik.
Potem możesz to dalej przetwarzać przez mysql_fetch_assoc lub mysql_fetch_array.


--------------------
Go to the top of the page
+Quote Post
Mejdej
post 13.06.2010, 21:22:00
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.01.2010

Ostrzeżenie: (0%)
-----


właśnie problem w tym, że nie mam w tej zmiennej wyniku.

załącze może procedure. może w niej mam jakiś błąd choć nie sądze bo odpalana nie z php zwraca wyniki.

  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `Tabela` $$
  4. CREATE DEFINER=`spotkani_f2f`@`%` PROCEDURE `Tabela`(var_id_sezonu VARCHAR(10), var_strona VARCHAR(1), var_data DATE)
  5. BEGIN
  6. IF (var_data = '0000-00-00') THEN
  7. SELECT DATE(NOW()) INTO var_data;
  8. END IF;
  9. SELECT
  10. d.nazwa AS Nazwa,
  11. (SELECT
  12. count(*)
  13. FROM
  14. f2f_test_mecze m
  15. WHERE
  16. ((m.id_d1 = pds.id AND (var_strona = 'H' OR var_strona = 'B'))
  17. OR (m.id_d2 = pds.id AND (var_strona = 'A' OR var_strona = 'B')))
  18. AND m.DATA <= var_data) AS Mecze,
  19. (SELECT SumaWynikowDruzyny(pds.id, 'W', var_strona, var_data)) AS Wygrane,
  20. (SELECT SumaWynikowDruzyny(pds.id, 'D', var_strona, var_data)) AS Remisy,
  21. (SELECT SumaWynikowDruzyny(pds.id, 'L', var_strona, var_data)) AS Przegrane,
  22. (SELECT SumaBramekDruzyny(pds.id, 'plus', var_strona, var_data)) AS BramkiPlus,
  23. (SELECT SumaBramekDruzyny(pds.id, 'minus', var_strona, var_data)) AS BramkiMinus,
  24. (SELECT SumaBramekDruzyny(pds.id, 'bilans', var_strona, var_data)) AS BilansBramek,
  25. (SELECT SumaPunktowDruzyny(pds.id, var_strona, var_data)) AS Punkty
  26. FROM
  27. f2f_test_pow_druzyna_sezon pds
  28. LEFT JOIN f2f_test_druzyny d ON (d.id = pds.id_druzyny)
  29. WHERE
  30. pds.id_sezonu = var_id_sezonu
  31. ORDER BY
  32. punkty DESC, BilansBramek DESC;
  33.  
  34. END $$
  35.  
  36. DELIMITER ;


--------------------
porównanie lokat
Go to the top of the page
+Quote Post
erix
post 13.06.2010, 21:33:39
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zwykły kod PHP powinien działać: http://www.daniweb.com/forums/thread41143.html

Nie używam za bardzo procedur (mniejsze możliwości unifikacji interfejsów w skryptach), ale myślę, że chodzi tu o samą składnię procedury, popatrz: http://dev.mysql.com/tech-resources/articl...storedproc.html


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Mejdej
post 14.06.2010, 00:25:43
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.01.2010

Ostrzeżenie: (0%)
-----


Dzięki. Być może dzięki Twojej odpowiedzi zdiagnozowałem problem. Zaraz to sprawdzę, ale sądzę, że chodzi o to, że w procedurze nie podałem co się ma z niej "Outować":)

Jednak to nie to. Nie mam pojęcia o co może chodzić. Nawet najprostsza procedura:

  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `spotkani_f2f`.`test` $$
  4. CREATE PROCEDURE `spotkani_f2f`.`test` ()
  5. BEGIN
  6. SELECT NOW();
  7. END $$
  8.  
  9. DELIMITER ;


nie działa gdy ją odpalam z poziomu php. W Mysql Query Browser wszystko jest ok, a przez PHP wywala błąd zapytania.


--------------------
porównanie lokat
Go to the top of the page
+Quote Post
Mchl
post 14.06.2010, 08:45:42
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


A jaki błąd?
Go to the top of the page
+Quote Post
Mejdej
post 14.06.2010, 09:20:28
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.01.2010

Ostrzeżenie: (0%)
-----


"execute command denied to user..."

ale dlaczego? przecież wchodzę tymi samymi danymi do programu co loguję się przez skrypt? Czemu z poziomu skryptu nie mam praw, a przez program mam? Jakiś pomysł?


--------------------
porównanie lokat
Go to the top of the page
+Quote Post
erix
post 14.06.2010, 10:08:46
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Łaczysz się zawsze z tym samym hostem, czy raz np. localhost, a raz 127.0.0.1?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Mchl
post 14.06.2010, 10:13:28
Post #9





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Wywołaj
Kod
SELECT USER()
z MysQL QB i z PHP i porównaj.
Go to the top of the page
+Quote Post
Mejdej
post 14.06.2010, 11:42:35
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.01.2010

Ostrzeżenie: (0%)
-----


No i się wyjaśniło. Coś nie tak było w konfiguracji serwera. Napisałem do hostingodawcy i już wszystko śmiga. Dziękuje wszystkich za posty.


--------------------
porównanie lokat
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 00:28