Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] PDO - pobranie danych z jednego wiersza
Forum PHP.pl > Forum > Przedszkole
Gość
W PDO pobieram dane w ten sposób:

$this->stmt = $this->db->prepare("SELECT * FROM $tabela ORDER BY id DESC LIMIT 1");
$this->stmt->execute();
foreach($this->stmt as $row)
{
$data = $row["data"];
}

ale jeżeli wiem, że zapytanie zwróci tylko jeden wiersz, to jak można pobrać z niego dane bez korzystania z pętli?
Gość
Spróbowałem to wykorzystać w ten sposób:

  1. $this->stmt = $this->db->prepare("SELECT * FROM $tabela ORDER BY id DESC LIMIT 1");
  2. $this->stmt->execute();
  3. $row = $this->stmt->fetchAll();
  4. $this->stmt->closeCursor();
  5. echo $row["data"];


ale nie działa, co robię źle?

memory
  1. print ($row);
. Błąd masz bo próbujesz z funkcji echo wywołać tablice co jest niemożliwe.
Damonsson
Szedłbym w kierunku fetch, a nie fetchAll
Gość
Zgadza się, działa fetch(PDO::FETCH_ASSOC);

Pytanie, czy warto się w ogóle tych funkcji używać? Może niezależnie czy zapytanie zwróci tylko jeden wiersz, czy wiele używać zawsze takiej konstrukcji?

  1. foreach($this->stmt as $row)
  2. {
  3. $data = $row["data"];
  4. }


W przypadku zapytań zwracających tylko jeden wiersz, ta pętla wykona się przecież tylko jeden raz, więc różnicy w wydajności względem fetch() chyba nie będzie?
Damonsson
Warto, bo możesz używać nie tylko PDO::FETCH_ASSOC, ale również innych np PDO::FETCH_COLUMN, gdzie dostajesz bezpośrednio interesującą Cię kolumnę, a nie tablicę. I nie musisz wtedy używać pętli.
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.