Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze zmienną w zapytaniu
Forum PHP.pl > Forum > Bazy danych > MySQL
sam.spade
Witam

To mój pierwszy post. Jestem tu bo utknąłem. Mam taki kawałek kodu:

  1. function unregister ($pdo, $userid, $way) {
  2. $query="SET @var=$way;INSERT INTO target (UserID,Start,Stop,Kierownik,Sposob) SELECT UserID,Start,NOW(),Kierownik,@var FROM source WHERE UserId=$userid";
  3. $res = $pdo -> query($query);
  4. // some code
  5. }


Problem jest ze zmienną $way. Gdy wywołuję funkcję tak:

  1. unregister($pdo, $userid, 0);


funkcja tworzy rekord w target ale pole Sposob zamiast 0 ma wartość 1 i to jak się okazuje niezależnie od tego z jaką wartościa trzeciego parametru ją wywołam

Kiedy zrobię coś takiego:

  1. $query="SET @var=0;INSERT INTO target (UserID,Start,Stop,Kierownik,Sposob) SELECT UserID,Start,NOW(),Kierownik,@var FROM source WHERE UserId=$userid";


lub

  1. $way = 0;
  2. $query="SET @var=$way; INSERT INTO target (UserID,Start,Stop,Kierownik,Sposob) SELECT UserID,Start,NOW(),Kierownik,@var FROM source WHERE UserId=$userid";


zapytanie działą dobrze, czyli pole Sposob ma wartośc 0.

echo "$query" zwraca w każdym przypadku to samo

O co chodzi?

Dziękuję i pozdrawiam
Sam
mmmmmmm
Po co tak kombinujesz?
  1. $query="INSERT INTO target (UserID,Start,Stop,Kierownik,Sposob) SELECT UserID,Start,NOW(),Kierownik,$way FROM source WHERE UserId=$userid";

Jaka jest wartość default na pole Sposób?
sam.spade
Wcześniej miałem zapytanie takie jak piszesz, ale też było źle więc spróbowałem z SET.

Pole `Sposob` tinyint(4) unsigned NOT NULL

No i się wyjaśniło - mea culpa :wstydnis:

Funkcja unregister jak można się domyślić służy do wyrejestrowywania użytkownika. Parametr $way określa czy nastąpiło to z woli użytkownika, czy automatycznie po dłuższym czasie bezczynności ($way=1). Procedura sprawdzająca czy upłynął ten czas miała literówkę ('+' zamiast '-') i za każdym razem stwierdzała, że czas już upłynął i wywoływała funkcję unregister zanim ja ją wywołałem w innym kawałku kodu. Skutek był prawidłowy czyli wyrejestrowanie użytkownika, tyle że z innym parametrem. Ja święcie przekonany, że to "moje" wywołanie zadziałało nie mogłem zrozumieć co się dzieje. Eh...

Sam
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-2024 Invision Power Services, Inc.