Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] PDO execute(), Proszę o szybką odpowiedz
--noobek--
post 3.03.2012, 15:08:40
Post #1





Goście







Witam!

Może kod:
Kod
function LoginExist($login){
    global $pdo;
    $query = $pdo->prepare("select * from UZYTKOWNICY where LOGIN=':login'");
    $query->bindParam(':login', $login, PDO::PARAM_STR);        
    $result = $query->execute();    
    if($result == FALSE){
        return false;
    }
    else{
        return true;
    }
    
}


Problem w tym ze zawsze zwraca true... nie mam już sił próbowałem na milion sposobów.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
Niktoś
post 3.03.2012, 15:29:54
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Spróbuj tak:
$query = $pdo->prepare("IF EXISTS(select * from UZYTKOWNICY where LOGIN=':login')SELECT 1 ELSE SELECT 0");
a dalej bez zmian.
Go to the top of the page
+Quote Post
skowron-line
post 3.03.2012, 15:40:46
Post #3





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

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


True jest zwracane jeżeli zapytanie zostało wykonane pomyślnie a nie jeżęli zwróciło jakiś wynik. Źle stosujesz tą metodę.


--------------------
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
--noobek--
post 3.03.2012, 15:56:28
Post #4





Goście







Ok zgadzam się z tym, że tam było źle, ale probowalem też tak:

Kod
function LoginExist($login){
    global $pdo;
    $query = $pdo->prepare("select * from UZYTKOWNICY where LOGIN=':login'");
    $query->bindParam(':login', $login, PDO::PARAM_STR);        
    $result = $query->execute();
    $result = $result -> fetch();    
    $result->closeCursor();    
    if($result){
         unset($result); return TRUE;
    }
    else{
         return FALSE;
    }
    
}

i dostaje:
Kod
Fatal error: Call to a member function fetch() on a non-object in /home/vol4/jcom.pl/jcom_10294194/htdocs/funkcje/core.php on line 49


Może to ma związek, że wyżej używam podobnej analogicznej funkcj ktora dziala:
Kod
function IloscPunktow($user)
{
    global $pdo;
    $query = $pdo->prepare("select * from UZYTKOWNICY where LOGIN=':user'");
    $query->bindParam(':user', $user, PDO::PARAM_STR);        
    $result = $query->execute();    $
    $result = $result -> fetch();
    $points = $result['PUNKTY'];
    $result->closeCursor();
    unset($result);
    return $points;
}
Go to the top of the page
+Quote Post
skowron-line
post 3.03.2012, 15:58:36
Post #5





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

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


http://www.php.net/manual/en/pdostatement.columncount.php


--------------------
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
--noobek--
post 3.03.2012, 16:04:48
Post #6





Goście







nadal:
Fatal error: Call to a member function columnCount() on a non-object in /home/vol4/jcom.pl/jcom_10294194/htdocs/funkcje/core.php on line 49
Go to the top of the page
+Quote Post
Niktoś
post 3.03.2012, 16:07:05
Post #7





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Może utwórz klasę pdo i przy każdym łączeniu z bazą danych odwołuj się do instancji klasy.
Być może global $pdo powoduje błędy,ale to tylko moje domysły ,jednakże z tego co czytałem nie zalecane jest używanie tejże metody.
http://stackoverflow.com/questions/4696189...p-object-global
Go to the top of the page
+Quote Post
Crozin
post 3.03.2012, 16:08:14
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


http://www.php.net/manual/en/pdo.prepared-statements.php - zwróć uwagę jak wstawia się placeholdery do zapytania.
Go to the top of the page
+Quote Post
--noobek--
post 3.03.2012, 16:22:04
Post #9





Goście







Dobrze mam placeholdery bo inna funkcja(podalem ja) dziala ok
Go to the top of the page
+Quote Post
--noobek--
post 3.03.2012, 16:55:49
Post #10





Goście







Kurcze spróbowałem wszystkiego co polecaliście i dalej nie działa...a nawet jak wróciłem do starych ustawień, nie działa to co wcześniej działało. Ma ktoś jeszcze jakieś pomysły?
Go to the top of the page
+Quote Post
Crozin
post 3.03.2012, 17:04:00
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Nie działa Ci, bo źle używasz parametrów - nie powinny być one otoczone apostrofami. W tej chwili ':login' jest traktowane jako dosłowny tekst :login, a domyślam się, że nie masz takiego użytkownika.
Go to the top of the page
+Quote Post
--noobek--
post 3.03.2012, 17:37:11
Post #12





Goście







KOLEGO naucz się czytać! Pisałem, że próbowałem tak jak radziłeś i nie działa tez. I nie to jest bledem a to, że $result nie jest klasą, tak jakby przypisanie nie działoło, gdy uzywam
Kod
global $pdo;
    $query = $pdo -> prepare("select * from UZYTKOWNICY where LOGIN=':user'");
    $query -> bindParam(':user', $user, PDO::PARAM_STR);    
    $result = $query -> execute();    //tu jakby sie cos walilo [code]

dla twojej wiadomosci:

probowałem robić tak, że robiłem [code]$user="'".$user."'";
a potem dawłem samo :user i to w ogole nie dziala.
TAK SAMO PISALEM, że to co miałem wczesniej DZIALALO,(ta druga funkcja, a zrobione analogicznie), a teraz nie dziala ani to ani to. Wiec jak masz pisac pierdoly to się nie odzywaj. Ktos inny może wie o co kaman?
Go to the top of the page
+Quote Post
--noobek--
post 3.03.2012, 17:39:39
Post #13





Goście







Btw twoj argument jest bez sensu, nawet jesli by szukalo uzytkownika o nazwie :user to by go nie znalazlo i by mi nic nie zwracalo i tak powinno to dzialac a nie rzucac bledami...
Go to the top of the page
+Quote Post
viking
post 3.03.2012, 18:22:56
Post #14





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

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


Masz to zapisać jako:
  1. $query = $pdo -> prepare("select * from UZYTKOWNICY where LOGIN=:user");


--------------------
Go to the top of the page
+Quote Post
--noobek--
post 3.03.2012, 19:04:36
Post #15





Goście







Dobra uporałem się z tym sam.
Ale z was "miszczowie"...

Tak powinno byc...
Kod
function LoginExist($login){
    global $pdo;
    $query = $pdo -> prepare("select * from UZYTKOWNICY where LOGIN=':login'");
    $query -> bindParam(':login', $login);          
    $query -> execute();
    $wynik =$query->fetch();  
    $query->closeCursor();
    if($wynik){
          return TRUE;
    }
    else{
         return FALSE;
    }    
}
Go to the top of the page
+Quote Post
Niktoś
post 3.03.2012, 19:22:37
Post #16





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Miszczu odpowiedź powinna brzmieć według mnie tak:dzięki za chęci pomocy,ale poradziłem sobie z tym sam.
No i pomagaj takiemu. thumbsdownsmileyanim.gif

Ten post edytował Niktoś 3.03.2012, 19:26:11
Go to the top of the page
+Quote Post
by_ikar
post 3.03.2012, 19:31:28
Post #17





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


  1. function LoginExist($login){
  2. global $pdo;
  3. $query = $pdo -> prepare('select * from UZYTKOWNICY where LOGIN=:login');
  4. $query -> bindParam(':login', $login);
  5. $query -> execute();
  6. if($query->rowCount()){
  7. return TRUE;
  8. }
  9. else{
  10. return FALSE;
  11. }
  12. }


Jeżeli chcesz znaleźć ilość rekordów które pasuje do zapytania, to rowCount, chyba że korzystasz z bazy danych która nie udostępnia w swoim API *_num_rows(), jak chociażby sqlite, to wtedy używasz fetch, i sprawdzasz czy zwraca false jeżeli nie będzie żadnego dopasowanego rekordu.

BTW mistrzem to trzeba być żeby bawić się w gobale..

Ten post edytował by_ikar 3.03.2012, 19:32:26
Go to the top of the page
+Quote Post
Niktoś
post 3.03.2012, 19:49:44
Post #18





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Ale z was "miszczowie"...

Miszczem ,nie mistrzem biggrin.gif

Ten post edytował Niktoś 3.03.2012, 19:52:17
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.07.2025 - 14:28