Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie z bazą MySQL za pomocą PDO, i proste wyciągnięcie wyników
skim
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 3
Dołączył: 9.05.2007
Skąd: Krzyż Wielkopolski

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


Witam,
nie wiem czy dobrze wybrałem dział (może powinienem napisać w Przedszkolu?). Mam taki problem: gdy wyciągam sobie proste wyniki w postaci tabeli za pomocą takiego skryptu:
  1. $pdo = new PDO($dsn, $userDB, $passwordDB);
  2. //$zapytanie = 'SELECT name, password FROM users WHERE name=' . $username . ' AND password=' . $password;
  3. $users = $pdo->query('SELECT * FROM users');
  4. $users->setFetchMode(PDO::FETCH_NUM);
  5. print_r($users->fetchAll());
  6. $users -> closeCursor();

to wszystko jest ok. Gdy próbuję dokonać kilka zmian:
  1. $pdo = new PDO($dsn, $userDB, $passwordDB);
  2. $zapytanie = 'SELECT name, password FROM users WHERE name=' . $username . ' AND password=' . $password;
  3. $users = $pdo->query($zapytanie);
  4. $users->setFetchMode(PDO::FETCH_NUM);
  5. print_r($users->fetchAll());
  6. $users -> closeCursor();

dostaję błąd:
Cytat
Fatal error: Call to a member function setFetchMode() on a non-object in C:\xampp\htdocs\projekt1\login.php on line 22

Co robię źle? Będę wdzięczny za pomoc. Korzystania z PDO uczę się stąd.
Pozdrawiam
Go to the top of the page
+Quote Post
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Kod
$zapytanie = 'SELECT name, password FROM users WHERE name=' . $username . ' AND password=' . $password;


Mnie tu brakuje ' po $password
Go to the top of the page
+Quote Post
skim
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 3
Dołączył: 9.05.2007
Skąd: Krzyż Wielkopolski

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


w nawiasach nie umieszcza się zmiennych (IMG:style_emoticons/default/smile.gif) zmienna $password jest zmienną tekstową. kropeczka dodaje tekst umieszczony w tej zmiennej (IMG:style_emoticons/default/smile.gif) zmienna $zapytanie jest dobrze zbudowana

EDIT: nie w nawiasach tylko cudzysłowach (IMG:style_emoticons/default/smile.gif)

Ten post edytował skim 28.11.2009, 13:51:33
Go to the top of the page
+Quote Post
kitol
post
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


zakładając, że login i password nie są liczbami, tylko stringami należy je umieścić w zapytaniu do bazy w apostrofach:



  1. $zapytanie = "SELECT name, password FROM users WHERE name='$username' AND password='$password'";
Go to the top of the page
+Quote Post
skim
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 3
Dołączył: 9.05.2007
Skąd: Krzyż Wielkopolski

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


ja pierniczę, nigdy nie naumiem się tych cudzysłowów i apostrofów (IMG:style_emoticons/default/smile.gif)
Dzięki
Go to the top of the page
+Quote Post
Mchl
post
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


I to miałem miałem na myśli właśnie, ale jakoś przeoczyłem, że cały string masz w apostrofach. (IMG:style_emoticons/default/tongue.gif)


Go to the top of the page
+Quote Post
Crozin
post
Post #7





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

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


1) Tak, temat powinien być na przedszkolu.
2) PDO rzuca wyjątkami, a Ty ich nigdzie nie przechwytujesz
3) PDO udostępnia mechanizmy do budowy zapytań... walenie
  1. SELECT ... WHERE username = '$username' AND password = '$password';
To zły pomysł chociażby przez fakt, że musisz najpierw te zmienne $username i $password filtrować.
4) Zapraszam do lektury: http://pl.php.net/manual/en/book.pdo.php
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: 22.08.2025 - 16:00