Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Instrukcja if i dziwny problem
PawelC
post
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Witam,
Zastanawia mnie jedna rzecz, mam taki oto kod:
  1. #Update URL
  2. public function update($url, $id)
  3. {
  4. $result=$this->db->prepare("UPDATE url SET adres=:url where id=:id limit 1");
  5. $result->bindParam(':url',$url, PDO::PARAM_STR);
  6. $result->bindParam(':id',$id,PDO::PARAM_INT);
  7. if(!$result->execute()){
  8. throw new Exception('Adres nie został zaktualizowany!');
  9. }
  10. }

Idąc na logikę jeżeli wrzucę to w instrukcję if czyli
  1. if($http->update($url, $id))
  2. {
  3. echo "Ok";
  4. }else{
  5. echo "Error";
  6. }

Po wykonaniu i poprawnej aktualizacji powinno mi pokazać OK, ale mimo to pokazuje Error i oczywiście aktualizuje dany rekord. Nie wiem czy ja coś pomieszałem, czy czegoś tu nie rozumiem.

Ten post edytował ExPlOiT 20.08.2017, 11:34:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Na logikę to metoda powinna coś zwrócić i ewentualnie rzucić wyjątkiem. Update nic nie zwraca.
Go to the top of the page
+Quote Post
PawelC
post
Post #3





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Boże faktycznie (IMG:style_emoticons/default/biggrin.gif) po poprawnym powinna zwrócić np return true, lub wyjątek w razie błędu...
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jesli faktycznie nadal chcesz rzucac w funkcji tym wyjatkiem, to caly twoj blok IF ELSE nie ma najmniejszego sensu. Rownie dobrze mozesz zrobic tak

  1. $http->update($url, $id);
  2. echo "Ok";

Wynik bedzie dokladnie taki sam
Go to the top of the page
+Quote Post
PawelC
post
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


@nospor do takiego samego wniosku doszedłem, ale to, że nic nie zwracałem rozwiązało moje problemy. Nie wiedziałem co jest nie tak, ale nie wziąłem pod uwagę, że nawet w podstawach OOP mówią, że metoda powinna zwracać jakąś wartość.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jesli twoja metoda, rzuca wyjatkiem, to zwracanie true tutaj tez nie ma wiekszego sensu. Dlatego caly czas ci mowie, ze twoj IF ELSE jest bez sensu w tym przypadku.
ALbo wywal wyjatek i zwraca true albo false i wowczas IF ELSE ma racje bytu, albo rzucaj tym wyjatkiem i lap wyjatki TRY CATCH. Ale nie mieszaj tych dwoch metod.
Go to the top of the page
+Quote Post
PawelC
post
Post #7





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Wywaliłem wyjątek i zwracam true, dalej to już instrukcja if sprawdza co zostało zwrócone (IMG:style_emoticons/default/smile.gif) Dziękuję bardzo za wskazanie błędów, teraz przynajmniej wiem, o co chodzi.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Wywaliłem wyjątek i zwracam true,
Mamy tylko nadzieje, ze w miejscu wywalonego wyjatku dales return false ?
Go to the top of the page
+Quote Post
PawelC
post
Post #9





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Oczywiście (IMG:style_emoticons/default/smile.gif)
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: 23.08.2025 - 10:30