Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:1.1.2014 17:13

Čest lidi. Je to asi tak den, co mě zdejší komunita ukamenovala za to, že ještě používám MySQL v PHP ... Začal jsem teda používat PDO, nebo respektive jsem se ho začal učit a už jsem narazil na první problém. Vůbec nechápu, proč se to děje. Píše mi to error line 28 ($vysledek = $pdo->fetch(PDO::FET­CH_ASSOC);) no a já nevím, co tam je špatně. Opravdu jsem procházel pomalu znak po znaku a nic jsem nenašel :D

Celý kód:

<?php
        //Pripojeni do databaze

        $pdo = new PDO('mysql:host=localhost;dbname=stranky', 'root', '');

        if($pdo)
        {
            echo("Připojeno <br>");

            $fetch = $pdo->prepare("SELECT * FROM news");
            $fetch->execute();

            print("Zkouška funkce PDO::FETCH_ASSOC<br>");
            print("Return next row as an array indexed by column name\n");

            $vysledek = $pdo->fetch(PDO::FETCH_ASSOC);

        }
        else
        {
            echo("Nepřipojeno");
        }
//------------------------//
        //Vybirani dat




        ?>
Odpovědět
1.1.2014 17:13
To co se zdá být nemožné, je vždy možné.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:1.1.2014 17:21

Tak zaprvé: Ty sprosté pozdravy si nech od cesty. Nejsem na to zvědavý.

$vysledek = $fetch->fetch(PDO::FETCH_ASSOC);

Doporučuji však změnit jméno proměnné $fetch za něco vhodnějšího.

Nahoru Odpovědět
1.1.2014 17:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Kit
Jan Demel:1.1.2014 17:24

Omlouvám se, nevěděl jsem, že si to vezmete tak k srdci. Děkuju za pomoc

Nahoru Odpovědět
1.1.2014 17:24
To co se zdá být nemožné, je vždy možné.
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Kit
Jan Demel:1.1.2014 17:31

Ještě by jsem se chtěl zeptat. Kdyby jsem chtěl, aby se mi vypsaly všechny články z databáze... Jak by jsem to měl udělat ? Řekněme, že každý článek by měl ID, které by mělo nastaveno AUTO_INCREMENT. Vím, že musím použít vyklus while(). Jenže jakou dát podmínku ?

Nahoru Odpovědět
1.1.2014 17:31
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Michal Maršálek:1.1.2014 17:37

Doufám, žes to s tím while nemyslel, že na každý článek použiješ samostatný dotaz! Prečti si seriál o SQL a PDO.

Editováno 1.1.2014 17:40
 
Nahoru Odpovědět
1.1.2014 17:37
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Michal Maršálek
Jan Demel:1.1.2014 17:43

Ne tak jsem to opravdu nemyslel. Myslel jsem to tak, že použiju jeden cyklus na jeden table.

Nahoru Odpovědět
1.1.2014 17:43
To co se zdá být nemožné, je vždy možné.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:1.1.2014 17:50
while ($vysledek = $fetch->fetch(PDO::FETCH_ASSOC)) {
    echo $vysledek['ID'];
}

ale dá se to udělat i přes iterátor

foreach ($dotaz->fetchAll(PDO::FETCH_ASSOC) as $vysledek) {
    echo $vysledek['ID'] . "\n";
}

nebo také jedním vrzem

echo implode("\n", $dotaz->fetchAll(PDO::FETCH_COLUMN));
Nahoru Odpovědět
1.1.2014 17:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Kit
Jan Demel:1.1.2014 17:52

Děkuju moc.

Nahoru Odpovědět
1.1.2014 17:52
To co se zdá být nemožné, je vždy možné.
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Kit
Jan Demel:1.1.2014 17:52

Kolikrát žasnu, jak je řešení primitivní a já v něm hledám něco těžkého -_-

Nahoru Odpovědět
1.1.2014 17:52
To co se zdá být nemožné, je vždy možné.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:1.1.2014 17:54

Tahle "primitivní" řešení umí až PDO. Ten starý ovladač to neuměl.

PDO umí i výsledek SQL dotazu nacpat do objektu. Práce s ním je pak velmi jednoduchá, zpravidla stačí jen echo $objekt.

Editováno 1.1.2014 17:56
Nahoru Odpovědět
1.1.2014 17:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.