Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Zapytanie do bazy mysql w PDO
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam pytanie - jak będzie wyglądało zapytanie do bazy danych w pdo takie jak poniżej?

  1. $row = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE `login`='$login' AND `password`='$password'"));


szukam od dłuższego czasu i nie mogę znaleźć...
lobopol
Nie chcę mi się wierzyć, że nie znalazłeś np. http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
Andrzej.W.
Temat: PHPMySQLPrawidlowo wyswietlana strona dziwne zrodlo strony
Kolega który mi pomagał, ma w podpisie link do swojego artykułu w temacie pdo, jak dla mnie rewelacyjnie napisany, lepiej niż na wikibooks tongue.gif
Pozdrawiam.
Andrzej.
miras
hmm, Andrzej.W. czytałem ten artykuł, jednak tam jest jak wyciągnąć tylko jeden element z bazy, a ja bym potrzebował cały rekord... może ktoś mi powiedzieć, co mam tutaj źle?

  1. $this->row = $this->pdo->prepare("SELECT * FROM users WHERE email=$this->email");
  2. echo $this->row['imie'];



  1. Notice: Undefined property: Login::$email in C:\xampp-portable\htdocs\vishop\class\shop.php on line 66
  2.  
  3. Fatal error: Cannot use object of type PDOStatement as array in C:\xampp-portable\htdocs\vishop\class\shop.php on line 67
Andrzej.W.
Kod
while($row = $stmt -> fetch()){
        echo '<option>'.$row['cost_category_id'].'. '.$row['cost_name'].'</option>';

Gdzie poszczególne row, to kolejne wartości całego rekordu. To przykład z mojego selecta.

Jak dla mnie powinieneś zliczyć ilość rekordów, wstrawić do zmiennej i podać jako argument w pętli.
miras
Przecież to bez sensu.. ja chcę pobrać tylko jeden rekord, jakbym miał pobierać wszystkie rekordy później filtrować to w pętli to już bym wolał skorzystać ze zwykłego query, myślę, że na pewno da się to jakoś pobrać w pdo, tylko jeszcze nie wiem jak :/
mmmmmmm
pdo->fetchAll()[0]
miras
już jestem blisko, błędów nie ma, ale zmienna $this->wynik jest pusta a nie powinna być..:/

  1. $this->row = $this->pdo->prepare("SELECT imie, telefon * FROM users WHERE email='{$this->email}'");
  2. $this->wynik = $this->row->fetchAll(PDO::FETCH_COLUMN, 0);
  3. var_dump($this->wynik);
Andrzej.W.
Żle zrozumiałem Twój pierwszy post. Małe ups. A to zapytanie sprawdzałeś w sql'u ? Może jeszcze jestem amator ;p, ale ta gwiazdka mi tam nie pasuje. smile.gif

Poza tym tutaj brakuje jeszcze
Kod
execute();

samo prepare nie wykonuje zapytania. To samo w pierwszym przykładzie. prepare() służy przygotowaniu zapytania.
Pozdrawiam.
miras
ehh... mam coś takiego:

  1. $this->row = $this->pdo->prepare(execute("SELECT imie, telefon * FROM users WHERE email='{$this->email}'"));


i błąd:

  1. Fatal error: Call to undefined function execute() in C:\xampp-portable\htdocs\vishop\class\shop.php on line 67
mlawnik
Jak na moje to chyba tak powinno być, ale mogę się mylić:
  1. $this->prepare(SELECT imie, telefon * FROM users WHERE email='{$this->email}');
  2. $zapytanie = $this->execute();
miras
niestety nadal nie to... podam obecny kod calej funkcji:


  1. public function check() {
  2. if (!empty($_POST['sprawdz'])) {
  3. $this->pyt = prepare("SELECT imie, telefon * FROM users WHERE email='{$this->email}'");
  4. $this->wynik = execute($this->pyt);
  5. var_dump($this->wynik);
  6. }
  7. }
mmmmmmm
  1. public function check() {
  2. if (!empty($_POST['sprawdz'])) {
  3. $this->pyt = prepare("SELECT imie, telefon FROM users WHERE email='{$this->email}'");
  4. $this->wynik = execute($this->pyt);
  5. var_dump($this->wynik);
  6. }
  7. }
viking
Jako że jestem autorem przytoczonego artykułu chętnie wysłucham zawsze co tam jest źle smile.gif

Teraz tak. W zapytaniu masz SELECT imie, telefon * co jest nieprawidłową składnią. Gwiazdka wybiera wszystkie kolumny albo decydujesz się które podać (czyli imie, telefon). Wykonujesz prepare więc zamiast email='{$this->email}' zrób email = ? i do tego podstaw $this->email. Jak zerkniesz w dokumentację http://www.php.net/manual/pl/book.pdo.php zobacz że masz kilka metod -fetchAll, fetch, fetchObject, fetchColumn. execute() jest metodą PDOStatement więc nie możesz ot tak wrzucić jako funkcję PHP.
miras
wrzucam całą klasę, pomimo tylu podpowiedzi nadal nie mogę zrozumieć jak to powinno być..


  1.  
  2. class Login extends Connect {
  3. public $statement;
  4. public function add() {
  5. if (!empty($_POST['sprawdz'])) {
  6. $this->email = $_POST['email'];
  7. $this->haslo = $_POST['haslo'];
  8. }
  9. }
  10.  
  11.  
  12. public function check() {
  13. if (!empty($_POST['sprawdz'])) {
  14. $this->pyt = $this->pdo->prepare("SELECT * FROM users WHERE email=?");
  15. $this->pyt->$this->pdo->execute($this->email);
  16. } // 71 linijka
  17. }
  18. }
  19.  


blad:

  1. Catchable fatal error: Object of class Login could not be converted to string in C:\xampp-portable\htdocs\vishop\class\shop.php on line 71
mlawnik
http://bit.ly/13MbN5E

Cytat
vishop\class\shop.php


piszesz sklep?
miras
raczej mały skrypt płatności wink.gif

irytuje mnie to trochę, temat sie juz ciagnie tyle czasu i jestem odsylany to poradnikow to do manuala, a ja potrzebuję się tylko dowiedzieć jak ten parametr:

  1. $this->pyt->$this->pdo->execute($this->email);


mam wprowadzać do zapytania...
viking
  1. $this->pyt = $this->pdo->prepare("SELECT * FROM users WHERE email=?");
  2. $this->pyt->execute(array($this->email));
miras
Dzięki wielkie.
ber32
Witam tutaj masz link do gotowej klasy może to ci pomoże żeby to lepiej zrozumieć class pdo
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.