• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PDO wyświetlanie jednego rekordu - alternatywa dla mysql_result

VPS Starter Arubacloud
0 głosów
1,324 wizyt
pytanie zadane 28 czerwca 2016 w PHP przez niezalogowany

Witam, wcześniej jak używałem mysql, to łatwo mogłem wyświetlić konkretny rekord np:

$zmienna = mysql_result($query,$zmienna,"nazwa_kolumny"); // zmienna mogła np. być równa 5
// potem robiłem
echo $zmienna // i fajnie działało

 

Jednak zgodnie z zaleceniami wielu użytkowników na tym forum przeniosłem się do PDO i teraz jeśli chce wyświetlić 5 rekord tabeli, to muszę zastosować taki kod:

  $query = $db->prepare("Select * FROM $name where id_tabeli = $zmienna");
   $query->execute();

            while($row = $query->fetch()) {
            echo $row['nazwa_kolumny'];
           }

Oczywiście działa tak samo, ale zapis jest dużo dłuższy przez co kod staje się mniej czytelny. 

 

Może jest jakiś dobry i inny sposób na wyświetlenie pojedynczego rekordu? Czy należy zawsze robić to przez pętlę?

2 odpowiedzi

0 głosów
odpowiedź 28 czerwca 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 28 czerwca 2016
 
Najlepsza

Jeśli chcesz wyciągnąć w PDO jeden rekord to wystarczy użyć po prostu fetch() bez pętli.

A jeśli masz ich więcej to może fetchAll() Cię zadowoli? Zwraca wszystkie pobrane rekordy w formie jednej tablicy.

PS. Po to w PDO jest bindowanie, aby tak:

$query = $db->prepare("Select * FROM $name where id_tabeli = $zmienna");

nie robić. Chyba, że napisałeś to tak tylko tutaj, dla przykładu - jeśli tak to okej.

komentarz 28 czerwca 2016 przez niezalogowany
Tak, tak pamiętam o bindowaniu. Nawet miałem pytanie jakiś czas temu: http://forum.pasja-informatyki.pl/141908/pdo-from-zmienna-get-bindvalue

Jednak zostawiłem PDO na jakiś czas, ale teraz znowu chce poćwiczyć i wytrenować lepiej.

Potestuję to fetch() bez pętli i się odezwę. Dzięki
komentarz 28 czerwca 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)
To dobrze. Nie skojarzyłem tego pytania, dlatego dla pewności napisałem.

Powodzenia ;)
komentarz 28 czerwca 2016 przez niezalogowany

Czyli tak jest poprawnie?


$query = $db->prepare("Select * FROM $name where id_tabeli = :zmienna");
            $query->bindValue(':zmienna',$zmienna, PDO::PARAM_STR);
            $query->execute();

            $row = $query->fetch();
            echo $row['nazwa_kolumny'];

 

Całkiem sporo linijek kodu na tak małą operację. 

 

komentarz 28 czerwca 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)

Wydaje się w porządku.

Teoretycznie ilość linijek można by było znacznie zmniejszyć, tylko nie wiem czy warto - chodzi o czytelność kodu.

Przykład? Dwie ostatnie linijki można też zapisać tak:

echo $query->fetch()['nazwa_kolumny'];
0 głosów
odpowiedź 28 czerwca 2016 przez efiku Szeryf (75,160 p.)

Podstawy SQL : LIMIT

Podstawy PHP: PDO fetchAll

Naprawdę, zajrzyj do Manuala odnośnie PDO na stronie PHP, to kilka minut czytania.

Google: PHP PDO i ukazuje się manual z listą metod wraz z opisem do czego służą. Zaoszczędzisz czasu, nauczysz się pracować z dokumentacją i poznasz inne ciekawe rzeczy w PDO jak Transactions. Przyda się, naprawdę.

komentarz 28 czerwca 2016 przez niezalogowany

Podstawy SQL : LIMIT 

Jak w tym przypadku przyda mi się LIMIT skoro wiem, że dostanę tylko jeden wynik? :)

 PDO fetchAll 

W ten sposób dostanę tablicę. 

 

komentarz 28 czerwca 2016 przez efiku Szeryf (75,160 p.)
W przypadku jak będziesz chciał wyświetlić tylko 5 rekordów jak to napisałeś. Emm a nie dostajesz tablicy? ;)
Na przyszłość jednak użyj Google tak jak napisałem - więcej się nauczysz. Aczkolwiek pytania z PDO są mile widziane :>
komentarz 28 czerwca 2016 przez niezalogowany
Źle mnie zrozumiałeś. :) Mnie chodziło o to, że $zmienna może być dla przykładu równa 5. Czyli 5 rekord w tabeli, ale nieważne, bo wyjaśnione. :)

Używam dużo google, nie wiem czemu niektórzy myślą, że jak ktoś pyta na forum, to znaczy że nie szukał w google. :P

 

Niedługo wstawię kod małego projektu i wtedy będę liczył na code review i solidną i porządną krytykę. :) Pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 28 stycznia 2016 w PHP przez McShadow Obywatel (1,050 p.)
0 głosów
4 odpowiedzi 567 wizyt
pytanie zadane 27 czerwca 2016 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
0 głosów
1 odpowiedź 242 wizyt
pytanie zadane 6 czerwca 2016 w C i C++ przez Zaka Nowicjusz (150 p.)

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...