Portál AbcLinuxu, 12. května 2025 05:52

Dotaz: PDO - Jak získat data z více řádků

30.10.2013 12:11 Martin
PDO - Jak získat data z více řádků
Přečteno: 347×
Odpovědět | Admin
Ahoj, snažím se získat data z mysql pomocí PDO, no tento způsob není asi košer, poradí někdo lepší řešení? Děkuji
$stmt = $pdo->prepare($sql);
$stmt->execute();
$row = $stmt->fetchAll();

if ($row === false)
    throw new Exception('Žádná data neexistují!');
$c = count($row);
for ($i = 0; $i < $c; $i++ ){
    $this->pageContent .= $row[$i]['date'].
                          $row[$i]['text'];
}
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 30.10.2013 12:26 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Odpovědět | | Sbalit | Link | Blokovat | Admin
$stmt = $pdo->prepare($sql);
$stmt->execute();
$this->pageContent = '';
foreach ($stmt->fetchAll() as $row) {
  $this->pageContent .= $row['date'].$row['text'];
}
Don't panic!
30.10.2013 12:29 Martin
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Moc děkuji, a poradíte mi ještě, jak to ošetřit proti SQLinjection ? Děkuji
30.10.2013 12:32 Kit
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Data strčíš jako parametry metody execute().
30.10.2013 12:50 Martin
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
I když vypisuji všechny řádky a všechny sloupce? (2 sloupce + ORDER BY `id`).
30.10.2013 12:54 Kit
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Když vypisuješ všechny řádky i sloupce, tak to samozřejmě bude prázdné. Uniká mi však smysl takové tabulky.
30.10.2013 13:03 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
$stmt = $pdo->prepare($sql);
$stmt->execute();
$this->pageContent = '';
while ($row = $stmt->fetch()){
  $this->pageContent .= $row['date'].$row['text'];
}
Výhoduto má v tom, že se nekopíruje celý výsledek do paměti, ale data se čtou po jednotlivých řádcích.
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
30.10.2013 12:30 Kit
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není to košer. Ten cyklus je tam zbytečný. Předpokládám, že chceš vypsat tabulku, zřejmě v HTML, se dvěma sloupci. Je to tak?
30.10.2013 12:47 Martin
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Předpokládám, že chceš vypsat tabulku, zřejmě v HTML, se dvěma sloupci. Je to tak?
Ano, ale ze všech řádků. Má to být jinak?
30.10.2013 12:56 Kit
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Můžeš využít funkci array_reduce() nebo cyklus foreach(), ale určitě ne for(). Nepracuješ s polem, ale se seznamem.
Tarmaq avatar 30.10.2013 14:18 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
takhle nejak by to asi bylo s array_reduce():
$this->pageContent = array_reduce(
    $stmt->fetchAll()
  , function($result, $item) {
      return $result . $item['date'] . $item['text'];
    }
);
Don't panic!
30.10.2013 14:23 Kit
Rozbalit Rozbalit vše Re: PDO - Jak získat data z více řádků
Sám bych to asi nenapsal lépe. Snad jen místo $this->pageContent = bych dal rovnou return.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.