Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php]Wyniki wywołania procedury w bazie do PHP
Forum PHP.pl > Forum > Bazy danych > MySQL
Mejdej
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
smietek
  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.
Mejdej
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 ;
erix
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
Mejdej
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.
Mchl
A jaki błąd?
Mejdej
"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ł?
erix
Łaczysz się zawsze z tym samym hostem, czy raz np. localhost, a raz 127.0.0.1?
Mchl
Wywołaj
Kod
SELECT USER()
z MysQL QB i z PHP i porównaj.
Mejdej
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.
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.