NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!

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.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
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.