Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie z bazą MySQL za pomocą PDO
Forum PHP.pl > Forum > Przedszkole
skim
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
Mchl
Kod
$zapytanie = 'SELECT name, password FROM users WHERE name=' . $username . ' AND password=' . $password;


Mnie tu brakuje ' po $password
skim
w nawiasach nie umieszcza się zmiennych smile.gif zmienna $password jest zmienną tekstową. kropeczka dodaje tekst umieszczony w tej zmiennej smile.gif zmienna $zapytanie jest dobrze zbudowana

EDIT: nie w nawiasach tylko cudzysłowach smile.gif
kitol
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'";
skim
ja pierniczę, nigdy nie naumiem się tych cudzysłowów i apostrofów smile.gif
Dzięki
Mchl
I to miałem miałem na myśli właśnie, ale jakoś przeoczyłem, że cały string masz w apostrofach. tongue.gif


Crozin
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
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.