• 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

0 głosów
1,870 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 (291,470 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 (291,470 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 (291,470 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ź 826 wizyt
pytanie zadane 28 stycznia 2016 w PHP przez McShadow Obywatel (1,050 p.)
0 głosów
4 odpowiedzi 1,078 wizyt
pytanie zadane 27 czerwca 2016 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
0 głosów
1 odpowiedź 376 wizyt
pytanie zadane 6 czerwca 2016 w C i C++ przez Zaka Nowicjusz (150 p.)

93,695 zapytań

142,612 odpowiedzi

323,223 komentarzy

63,224 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...