IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: Pomoc s PDO wrapperom - fetch()

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Lava
Člen
Avatar
Lava:5.2.2020 10:50

Mám vytvorený databázový wrapper, ktorý mi pri fetch() z nejakých príčin zduplikuje výsledok z databázy. Mal by mi vrátiť jeden row, hodnoty sltpcov v poli, štýlom
'user_id' => int 1
'user_pwd' => string '123456' (to je priklad, samozrejme, že to mam hashovane)
atď.

Lenže ono mi to pole akoby duplikovalo, pričom do duplikátu dáva číselné indexy. Vyzerá to teda po vytiahnutí z databázy asi takto

'id' => int 1
  0 => int 1
  'name' => string 'Lukáš Mrkvička' (length=16)
  1 => string 'Lukáš Mrkvička' (length=16)

Zkusil jsem: NA wrapper som použil kód túto zo serialu vlastného objektového CMS:

Takto vyzerá definovaná funkcia selectFirst()

static function selectFirst($query, $params = array())
    {
        $result = self::$connection->prepare($query);
        $result->execute($params);
        return $result->fetch();
    }

A takto to volám

$findUser = DB::selectFirst('SELECT * FROM users WHERE email = ? AND password = ?', [$email, $hash]);

Následne sa cez foreach snažím naplniť $_SESSION s tými hodnotami, ale vyhadzuje mi to notice, že sa to snaží dať číselné indexy do sessions, čo sa nepatrí.

Chci docílit: Mal by mi vrátiť jeden row, hodnoty sltpcov v poli, štýlom
'user_id' => int 1
'user_pwd' => string '123456' (to je priklad, samozrejme, že to mam hashovane)
atď.

Odpovědět
5.2.2020 10:50
Aspartám, sacharín, to je môj vitamín
Avatar
Lava
Člen
Avatar
Lava:5.2.2020 10:54

Už som sa dogooglil k tomu, že nestačí to len fetchovať, ale treba dať

fetch(PDO::FETCH_ASSOC)

Každopádne som to zmenil v tej definovanej metóde selectFirst, teraz je ale otázka, či je možnosť, že mi to v iných častiach programu bude robiť šarapatu? Nechce sa mi veriť, že ak by to bolo takto by default, že by to David Č. nezakomponoval do serialu o vlastnom CMS?

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
5.2.2020 10:54
Aspartám, sacharín, to je môj vitamín
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 2 zpráv z 2.