Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]PDO Funkcja zwraca ciągle true
ZaXaZ
post 3.08.2014, 10:33:06
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Probuje napisac funkcje ktora zwroci true gdy uzytkownik istnieje, false jak nie, zwraca zawsze true.

  1. $word[2] = 'test';
  2.  
  3. function checkUserExists($sel='*', $us)
  4. { global $PDO;
  5. if (!@$us) die('Podaj nick lub numer osoby.');
  6. $Ui = strtolower($us);
  7. $User = $PDO->prepare('SELECT '.$sel.' FROM users WHERE LOWER(nick)=:nick OR numer=:numer;');
  8. $User->bindParam(':nick', $Ui, PDO::PARAM_STR);
  9. $User->bindParam(':numer', $us, PDO::PARAM_INT);
  10. $User->execute();
  11. $User = $User->fetch(PDO::FETCH_ASSOC);
  12. if (isset($User)) return true;
  13. return false;
  14. }
  15.  
  16. $cue = checkUserExists('nick', $word[2]);
  17. if ($cue) echo 'Istnieje';


--------------------
Go to the top of the page
+Quote Post
skowron-line
post 3.08.2014, 10:51:29
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


pdo fetch
Cytat
The return value of this function on success depends on the fetch type. In all cases, FALSE is returned on failure.


isset
Cytat
isset — Determine if a variable is set and is not NULL


wiec jezeli nie ma usera to zmienan $user ma false wiec nie jest null em


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
ZaXaZ
post 21.08.2014, 12:58:40
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


  1. if (!$User) return false;
  2. return true;


nadal zwraca true, cos zle robie?

--edit--
problem leżał w operatorze not ktory zwracal true a ja zwracalem przy tym false.

dzięki za pomoc!

Po przeróbce ta funkcja znów nie działa (a konkretniej if się nie wykonuje)
  1. <?php
  2. function checkUserExists($sel='*', $us)
  3. { global $PDO;
  4. if (!@$us) die(BotGG.'Podaj nick lub numer osoby.');
  5. $Ui = strtolower($us);
  6. $User = $PDO->prepare('SELECT '.$sel.' FROM users WHERE LOWER(nick)=:nick OR numer=:numer;');
  7. $User->bindParam(':nick', $Ui, PDO::PARAM_STR);
  8. $User->bindParam(':numer', $us, PDO::PARAM_INT);
  9. $User->execute();
  10. $CUE = $User->fetch(PDO::FETCH_ASSOC);
  11. return ($CUE===true) ? $CUE : false;
  12. }
  13.  
  14. $CUE = checkUserExists('nick, staff', $word[2]);
  15.  
  16. if ($CUE!=false || !empty($CUE))
  17. {
  18. echo 'Osoba istnieje';
  19. }


jakieś pomysły?

Ten post edytował ZaXaZ 3.08.2014, 11:18:28


--------------------
Go to the top of the page
+Quote Post
Turson
post 21.08.2014, 13:01:50
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zrób po prostu
  1. var_dump($CUE);
Go to the top of the page
+Quote Post
nospor
post 21.08.2014, 13:02:01
Post #5





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




$CUE = $User->fetch(PDO::FETCH_ASSOC);
return ($CUE===true) ? $CUE : false;

Przeciez fetch() nie zwraca TRUE.... nie mozesz tego porownywac do TRUE bo zawsze bedziesz mial nieprawde :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ZaXaZ
post 21.08.2014, 13:17:42
Post #6





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(nospor @ 21.08.2014, 14:02:01 ) *
$CUE = $User->fetch(PDO::FETCH_ASSOC);
return ($CUE===true) ? $CUE : false;

Przeciez fetch() nie zwraca TRUE.... nie mozesz tego porownywac do TRUE bo zawsze bedziesz mial nieprawde :/


dzięki, teraz działa jak trzeba
  1. return !empty($CUE) ? $CUE : false;
  2. //(...)
  3. if ($CUE) echo 'działa';


Ten post edytował ZaXaZ 21.08.2014, 13:30:59


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 03:37