Portál AbcLinuxu, 25. dubna 2024 08:03


Dotaz: PHP - nahrazení funkce foreach

28.10.2013 13:27 Martin
PHP - nahrazení funkce foreach
Přečteno: 350×
Odpovědět | Admin
Ahoj, čím bych mohl nahradit ten foreach? Potřebuji načíst jeden údaj z MySQL a nechci to pomocí cyklu, myslím, že je to zbyteční přes cyklus když je tam jen jeden řádek, ne? Děkuji
$stmt = $pdo->prepare($sql);
$stmt->execute(array($email, $pass));
$id = $stmt->fetchAll();

if($stmt->rowCount() === 1)
{
     $this->mess('Jste přihlášeni!');
     foreach($id as $row)
     {
          echo $row['id'];
     }
}
else
{
   $this->error('Zadané údaje jsou neplatné!');
}

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.10.2013 13:53 gsnak | skóre: 22 | blog: gsnak
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano.
Čo Rys, to vrah!
28.10.2013 14:08 Kit
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
Odpovědět | | Sbalit | Link | Blokovat | Admin
Místo fetchAll() použít jen fetch() nebo ještě lépe fetchColumn():
$stmt = $pdo->prepare($sql);
$stmt->execute(array($email, $pass));
$id = $stmt->fetchColumn();

if ($id === false)
    throw new Exception('Zadané údaje jsou neplatné!');

$this->mess('Jste přihlášeni!');
echo $id;
28.10.2013 14:27 Martin
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
Díky moc, a když bych chtěl k tomu id ještě jeden údaj z dalšího sloupce ze stejného řádku, tak to bude takto?
$stmt = $pdo->prepare($sql);
$stmt->execute(array($email, $pass));
$id = $stmt->fetchColumn();
$name = $stmt->fetchColumn();

if ($id === false OR $name === false)
    throw new Exception('Zadané údaje jsou neplatné!');

$this->mess('Jste přihlášeni!');
echo $id;
echo $name;
Děkuji
28.10.2013 14:44 Kit
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
Ne, takhle to nelze. Použiješ klasický fetch()
$stmt = $pdo->prepare($sql);
$stmt->execute(array($email, $pass));
list($id, $name) = $stmt->fetch();

if ($id === false || $name === false)
    throw new Exception('Zadané údaje jsou neplatné!');

$this->mess('Jste přihlášeni!');
echo $id;
echo $name;
Pozor na "OR", slouží k jinému účelu a má jinou prioritu. V daném případě je však test $name === false zbytečný.
AraxoN avatar 28.10.2013 15:17 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
Odpovědět | | Sbalit | Link | Blokovat | Admin
Použitím funkcie reset():
$row=reset($id);
echo $row["id"];
28.10.2013 15:29 Kit
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
To už zrovna může vytáhnout i tu požadovanou hodnotu $name
list($ident, $name) = reset($id);
echo "ident = $ident, name = $name\n";
AraxoN avatar 28.10.2013 17:30 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: PHP - nahrazení funkce foreach
môže, ale v pôvodnom kóde mal len echo $row['id'];

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.