Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze zmienną w zapytaniu
sam.spade
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.01.2013

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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?
Go to the top of the page
+Quote Post
sam.spade
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.01.2013

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


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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 17:02