Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Problem opisałem tu: http://forum.php.pl/IF_EXISTS__THEN__ELSE__END_Ewentua...

Ale niestety nikt na razie nie był w stanie mi odpowiedzieć, albo po prostu mało osób tym się interesuje.

Na samym końcu wyjaśniłem o co dokładnie mi chodzi, wiem, że można to łatwo zrobić kilkoma zapytaniami mysql_query, ale nie o to mi chodzi.

Pozdrawiam, i dzięki za pomoc :D

konto usunięte

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Napisz procedure skladowalna tu masz przykladowego helpa

http://www.brainbell.com/tutorials/MySQL/Using_Stored_...
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Bartosz, a mógłbyś trochę pomóc, przyznam, że pierwszy raz słysze o tych procedurach, byłbyś na tyle dobrodusznym człowiekiem co pomoże sklecić odpowiednie zapytanie?

rozumiem, że CREATE PROCEDURE jest odpowiednikiem function w php i ma za zadanie utworzenie jakiejś "procedury", która po kolei wykonuje określone zadania.

Tylko jak to wykorzystać w praktyce przy w moim problemie?

Tak jak pisałem założenia są jasne tylko po kolei je wykonywać trzeba...

A i to wysyła się normalnie poleceniem mysql_query? Czy jakoś inaczej trzeba zapodać do db? Bo nie mam dostępu do shella serwera :/Paweł Ługowski edytował(a) ten post dnia 27.10.08 o godzinie 18:17

konto usunięte

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

przykladowa procedura (nie jest to rozwiazanie twojego problemu ale latwo zalapiesz o co biega):

DELIMITER $$
DROP PROCEDURE IF EXISTS foo $$
CREATE PROCEDURE foo(IN param1 INT,IN param2 INT,IN param3 DATE)
BEGIN
DECLARE moja_zmienna1 INT ;
DECLARE moja_zmienna2 INT;
SELECT number FROM addresses WHERE number=param1 LIMIT 1 INTO moja_zmienna1;

IF (moja_zmienna1 IS NULL)
THEN
INSERT INTO addresses VALUES(0,"address",1,NOW());
ELSE
UPDATE addresses SET DATE=NOW() WHERE number=param1;
END IF;

END $$
DELIMITER ;

a w PHP wywolujesz ja jak kazde inne query np :

$query="CALL foo(0,1,"2008-10-27")"

i wywolujesz mysql_query($query) czy co to za cuda tam sa w php.
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Dzięki stary,

Twój manual jest o wiele łatwiejszy do zakumania niż ten co mi podesłałeś. Tam duzo pisania a przykłady jakieś dziwne. A to póki co zaczytuje się do MySQLa. Mam tylko pytanie. Rozumiem, że procedury zaczytują się do Bazy danych. Mam jakąś możliwość podglądania jakie procedury są już zaczytane? (żeby np, za jakiś czas je pokasować?
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Paweł Ługowski:
rozumiem, że CREATE PROCEDURE jest odpowiednikiem function w php i ma za zadanie utworzenie jakiejś "procedury", która po kolei wykonuje określone zadania.

No niezupelnie. CREATE FUNCTION jest odpowiednikiem function :) Funkcji mozesz uzywac w zapytaniu, procedury nie, na przyklad.
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Czyli procedure moge utworzyć jedynie w konsoli phpmyadmin i nie moge wysłac jej do db poprzez mysql_query, a function tak?
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Obie mozesz utworzyc (gdziekolwiek, nawet w notatniku) i wyslac do serwera (jakkolwiek, chocby przez putty).

Zastosowania funkcji i procedury sa inne, chodz clue jest taki, ze obie wykonuja jakis tam zestaw instrunkcji ktory im zaprogramujesz. Tylko w inny sposob i na innych zasadach.
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Kurde nie wiem co się stało, czy to wina przeglądarki, czy połaczenia. W pracy na IE6 bez problemu dodałem Procedurke do mysqla, a teraz na FF i IE7 wywala mi w phpmyadmin:

Fatal error: Maximum execution time of 300 seconds exceeded in /var/www/localhost/htdocs/phpmyadmin/libraries/import/sql.php on line 105

O co tu chodzi?

konto usunięte

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Paweł. Weź do ręki słownik i przetłumacz sobie błąd. Ale wierzę, że to zrobiłeś i rozumiesz, że skrypt wykonywał się dłużej niż 300 sekund i został po prostu ubity. Może masz jakąś pętlę typu:
while true
do
KOD
done
Może procedura do MySQLa jest za duża, nieoptymalna i wykonuje się strasznie długo. Podziel ją na osobne zapytania, zoptymalizuj.
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Z angola idzie mi całkiem nieźle i wiem co oznacza to stwierdzenie, ale liczyłem na podpowiedzi czemu to wywala się.

Moja procedura: http://forum.php.pl/Problem_z_dodaniem_procedury_t1058...

Pytanie teraz. Dlaczego wywala mi owy błąd nawet przy próbie dodania procedury

CREATE PROCEDURE foo(IN id INT)
BEGIN
DECLARE d INT;
SELECT * FROM listy WHERE id = id INTO d;
END

od razu pisze ze ten przyklad napisalem z palca i moze zawierac male bledy, ale nie o to chodzi...
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Mozesz wyedytowac max_execution_time w php.ini. Zrestartuj potem serwer.

Swoja droga dziwne zeby cos takiego dzialo sie jak pracujesz na lokalnej bazie, chyba ze wykonujesz jakis naprawde duzy skrypt (no ale z twojego opisu wynika ze nie wykonujesz). Pamietam, ze kiedys dawno temu jak bawilem sie MySql mialem ten sam problem, pomoglo chyba wlasnie edytowanie php.ini (albo innego pliku z ustawieniami)Bartosz Ślepowroński edytował(a) ten post dnia 28.10.08 o godzinie 20:00
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

No na localhoscie to mam i na zewnętrznym serwerze do którego niestety nie mam dostępu,a przeciez nie chodzi o to, żeby wydużać time execution, prawda - jak mówie wcześniej chodziło bezproblemowo i zapytanie wykonywało się w około 1s :/

konto usunięte

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

A jakie wersje MySQLa? Może jakieś różnice są?
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

A mozesz w ogole wykonac jakiekolwiek zapytanie?
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

localhost: Wersja serwera: 4.0.26
serwerek: Wersja serwera: 5.0.60-log

Zapytania typu INSERT SELECT i wsio normalne wchodzi
wysłanie zapytania CALL check_list wywala mi error, że nie ma takiej procedury (ale to wiem, bo nie moge jej w końcu dodać) niemniej jednak tez przechodzi to dość szybko i mam odpowiedź o braku procedury w 0.01s...

Jakieś sugestie?

konto usunięte

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Paweł Ługowski:
localhost: Wersja serwera: 4.0.26

Wersja 4.x nie obsługuje procedur ...

Ściągnij EMS SQL Manager for MySQL. Bardzo dobre narzędzie do tworzenia / testowania procedur, funkcji, wyzwalaczy itp ...
serwerek: Wersja serwera: 5.0.60-log
Stanisław Głogowski edytował(a) ten post dnia 28.10.08 o godzinie 21:08
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

No dobra, ale na serwerku procedury śmigały i tam testowałem to chwile działało, a teraz? Hem...
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Sprawdzałeś logi?
Bartosz Ślepowronski

Bartosz Ślepowronski Problem? Jaki
problem?

Temat: Mam problem... IF [...] THEN [...] ELSE [...] END

Stanisław Głogowski:
Wersja 4.x nie obsługuje procedur ...

No ale tez nie ma wbudowanej funkcji, ze jak nie wie o co cho to wywala timeout ;)

Następna dyskusja:

Mam problem i szukam pomocy...




Wyślij zaproszenie do