Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> pobieranie pojedyńczego wyniku przy pomocy PDO
jolam
post 17.08.2009, 11:03:24
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

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


Po nocnych zmaganiach z PDO potrafię robić proste zapytania SELECT, INSERT, UPDATE czyli prawie wszystko czego potrzebowałam . Jedynie nie potrafię zrobić odpowiednika sqlite_fetch_single
W manualau jest jedynie coś takiego:

  1. <?php
  2. $db = new PDO('mysql:host=localhost;dbname=pictures','user','password'); //1
  3. $pics = $db->query('SELECT COUNT(id) FROM pics'); //2
  4. $this->totalpics = $pics->fetchColumn(); //3
  5. $db = null;//4
  6. ?>


Ten kod, który wkleiłam jest dla mnie mało czytelny, nie rozumiem go. A poza tym ten kod jest dużo dłuższy niż analogiczny w sqlite2, czyli więcej pisania

Może napisze co ja z tego rozumiem:

1 tworze połączenie z bazą danych

2 wysyłam zapytanie do bazy a wynik zapytania zapisuje pod zmienną $pics
czyli coś jak $query = sqlite_query( $base, $sqlstm )
i potem coś jak $res = sqlite_fetch_array( $query ) ale nie ma pętli while

3 niestety nic wstydnis.gif sadsmiley02.gif
czytałam o $this w http://pl.wikibooks.org/wiki/PHP/Wst%C4%99...nia_obiektowego ale po prostu tego nie rozumiem sad.gif

4 zamykam połączenie z bazą

Czy nie ma innej możliwości na pobranie pojedynczego wyniki?
Na swojej stronie dość często korzystam z zapytań, które mają zwrócić albo pojedynczy tekst albo cyfrę. Np pytam o parentid dla rekordu id=2598, albo pytam o name dla tego rekordu albo tak jak w przykładzie pytam ile jest rekordów spełniających jakiś warunek.

Bardzo proszę o pomoc gdyż nie umiem sama znaleźć rozwiązania
A nie chce używać czegoś nie wiedząc czym jest.

pozdrawiam Jola
Go to the top of the page
+Quote Post
Quantum
post 17.08.2009, 11:08:14
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


no tak, ale $this to używasz tylko w klasach, a tutaj musisz się odwołać tak: $obiekt-> ..oczywiscie jeśli wcześniej go utworzyłaś.
Go to the top of the page
+Quote Post
jolam
post 17.08.2009, 11:31:49
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

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


sniffer32 nie rozumiem tego, ten kod to mam z manuala i on działa Ale tak jak juz napisałam jest długi i nie rozumiem go.
sad.gif
Go to the top of the page
+Quote Post
wookieb
post 17.08.2009, 11:33:51
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No to masz wileki problem skoro nie rozumiesz języka pisanego. Może lepiej zrezygnuj z programowania skoro nawet manual jest dla ciebie murem nie do przebicia.
http://pl2.php.net/manual/en/pdostatement.fetch.php


--------------------
Go to the top of the page
+Quote Post
l3l0
post 17.08.2009, 11:35:35
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 16
Dołączył: 24.07.2009
Skąd: Gdańsk

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


Witam
Polecam manuala http://pl2.php.net/pdo

Jeden rekord można wybrać w ten sposób:
  1. $db = new PDO('mysql:host=localhost;dbname=pictures','user','password');
  2. $pics = $db->query('SELECT COUNT(id) FROM pics'); //methoda query zwraca obiekt PDOStatement
  3. $totalPics = $pics->fetch(PDO::FETCH_NUM); //wybieramy jeden rekord (pierwszy) zwrócony przez zapytanie możemy też użyć fetchAll żeby wybrać wszystkie rekordy zwrócone przez zapytanie

zmienna totalPics będzie tablicą numerowaną od zera (const FETCH_NUM) czyli wynik counta będzie dostępny w totalPics[0]

Pozdrawiam

Ten post edytował l3l0 17.08.2009, 11:36:39
Go to the top of the page
+Quote Post
jolam
post 17.08.2009, 11:46:14
Post #6





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

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


wookieb jesteś bardzo denerwujący, nie pomagasz a przeszkadzasz tylko. Ciekawe czy ty tak od razu wszystkie wiedziałeś i rozumiałeś, pamięta wół jak cielęciem był?

l3l0 czyli $db->query('SELECT COUNT(id) FROM pics'); zwraca obiekt, który jest tablica tak? i dopiero z tej tablicy muszę pobrać pierwszy rekord? I to pobieranie pierwszego rekordu robię poprzez $totalPics = $pics->fetch(PDO::FETCH_NUM); czy tak? Jeśli tak to dlaczego, $pics nie jest po prostu zmienną ? przecież będzie zawierać tylko liczbę rekordów?

pozdrawiam Jola
Go to the top of the page
+Quote Post
Quantum
post 17.08.2009, 11:46:29
Post #7





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


@jolam - proponuje najpierw nauczyć się podstaw OOP, bo bez nich nic z PDO nie zrozumiesz..

  1. $db = new PDO('mysql:host=localhost;dbname=pictures','user','password');
  2. $stmt = $db->query('jakies zapytanie');
  3. $stmt->execute();
  4. $stmt->fetch( ... );


w miejsce kropek podajesz sposób wydobywania danych możesz pozostawić puste, dla przykładu $stmt->fetch(PDO::FETCH_OBJ) zwróci nam obiekt, PDO::FETCH_ASSOC tablice i później zależnie od tego jak ustalisz wydobywujesz dane, przykład:

resztę znajdziesz w manualu z linku ~wookieb
  1. $db = new PDO('mysql:host=localhost;dbname=pictures','user','password');
  2. $stmt = $db->query('SELECT COUNT(id) as records FROM pics');
  3. $stmt->execute();
  4. $totalpics = $stmt->fetch(PDO::FETCH_OBJ);
  5. echo $totalpics->records;
  6.  
  7. //albo tablice asocjacyjna
  8. $totalpics = $stmt->fetch(PDO::FETCH_ASSOC);
  9. echo $totalpics['records'];


akurat w twoim przypadku najprościej będzie użyć FETCH::NUM, tak jak podał ~l3l0

Ten post edytował sniffer32 17.08.2009, 12:08:16
Go to the top of the page
+Quote Post
dr_bonzo
post 17.08.2009, 12:05:09
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


@jolam:
Cytat
wookieb jesteś bardzo denerwujący, nie pomagasz a przeszkadzasz tylko. Ciekawe czy ty tak od razu wszystkie wiedziałeś i rozumiałeś, pamięta wół jak cielęciem był?

Nam sie po prostu nie chce tlumaczyc ci 10ty raz czegos co masz w necie w 100tkach tutoriali albo w ksiazkach.
Z tego co widze to nie chce ci sie przerobic OOP - a nie jest to proste zeby zaczaic to po jednym poscie na forum.
W dodatku podsuwamy ci rozwiazania/funckje ktorych masz uzyc, a potem w kodzie widzimy ze ich nie uzywasz.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
jolam
post 17.08.2009, 12:25:31
Post #9





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

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


dr_bonzo jak nie chcesz mi pomóc to po co się odzywasz? Żeby powiedzieć że nie chcesz? Przecież już mi to mówiłeś.
nie mów mi, że czegoś mi się nie chce, bo nic o tym nie wiesz. Cały czas próbuję zrozumieć OOP i czytam właśnie różne kursy, te które mi podałeś też. Niestety nie idzie mi to zbyt dobrze. Tak jak pisałam już udaje mi się wykonywać proste zapytania przy pomocy PDO jedynie wydobycie pojedynczej wartości mi nie wychodzi.

sniffer32 bardzo Ci dziękuję, niestety nie mogę powiedzieć żebym coś więcej zrozumiała, ale i tak bardzo dziękuję. Chyba pozostanę przy rozwiązaniu l3l0 choć i jego nie bardzo rozumiem, ale wydaje mi się jakieś prostsze. Choć to bardzo dziwne, że fetch() nie ma opcji single, tak abym wynik mogła od razu przypisać do jakiejś zmiennej. Zamiast tego ilość kodu i skomplikowanie tak bardzo wzrosło sad.gif

pozdrawiam serdecznie Jola
Go to the top of the page
+Quote Post
erix
post 17.08.2009, 12:48:21
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
dr_bonzo jak nie chcesz mi pomóc to po co się odzywasz? Żeby powiedzieć że nie chcesz? Przecież już mi to mówiłeś.

Bez przesady, pomoc != gotowiec. Szanuj nas, my będziemy szanować Ciebie. Oczekujesz gotowca, a w tym wątku go na pewno nie dostaniesz, gdyż go zamykam.

I nie radzę spamować użytkowników przez PW.

Cytat
Zamiast tego ilość kodu i skomplikowanie tak bardzo wzrosło

Gdy się nie ma podstaw, to wszystko wydaje się skomplikowane. Najpierw przygotowujesz się teoretycznie z przepisów ruchu drogowego, dopiero potem siadasz z instruktorem za kółkiem, nie na odwrót.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Closed 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: 17.06.2025 - 04:17