Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Zapytanie do bazy mysql w PDO
miras
post
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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źć...


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Nie chcę mi się wierzyć, że nie znalazłeś np. http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers


--------------------
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #3





Goście







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.
Go to the top of the page
+Quote Post
miras
post
Post #4





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #5





Goście







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.

Ten post edytował Andrzej.W. 22.04.2013, 19:34:14
Go to the top of the page
+Quote Post
miras
post
Post #6





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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 :/


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





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


pdo->fetchAll()[0]
Go to the top of the page
+Quote Post
miras
post
Post #8





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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);


--------------------
Go to the top of the page
+Quote Post
-Andrzej.W.-
post
Post #9





Goście







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

Ten post edytował Andrzej.W. 22.04.2013, 21:50:10
Go to the top of the page
+Quote Post
miras
post
Post #10





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
mlawnik
post
Post #11





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

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


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();


--------------------
Pozdrawiam,
mlawnik

Cytat(nospor)
Jedzmy gówno.... miliony much nie może się przecież mylić
Go to the top of the page
+Quote Post
miras
post
Post #12





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


Ten post edytował miras 1.05.2013, 12:31:10


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #13





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  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. }
Go to the top of the page
+Quote Post
viking
post
Post #14





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

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


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.


--------------------
Go to the top of the page
+Quote Post
miras
post
Post #15





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
mlawnik
post
Post #16





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

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


http://bit.ly/13MbN5E

Cytat
vishop\class\shop.php


piszesz sklep?


--------------------
Pozdrawiam,
mlawnik

Cytat(nospor)
Jedzmy gówno.... miliony much nie może się przecież mylić
Go to the top of the page
+Quote Post
miras
post
Post #17





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
viking
post
Post #18





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

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


  1. $this->pyt = $this->pdo->prepare("SELECT * FROM users WHERE email=?");
  2. $this->pyt->execute(array($this->email));


--------------------
Go to the top of the page
+Quote Post
miras
post
Post #19





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Dzięki wielkie.


--------------------
Go to the top of the page
+Quote Post
ber32
post
Post #20





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


Witam tutaj masz link do gotowej klasy może to ci pomoże żeby to lepiej zrozumieć class pdo


--------------------
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 Aktualny czas: 22.08.2025 - 01:44