Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PDO Funkcja zwraca ciągle true
Forum PHP.pl > Forum > Przedszkole
ZaXaZ
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';
skowron-line
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
ZaXaZ
  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?
Turson
Zrób po prostu
  1. var_dump($CUE);
nospor
$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 :/
ZaXaZ
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';
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-2025 Invision Power Services, Inc.