Autor Zpráva
luma64
Profil
Pozdravujem ! Pri používani WHILE v php kóde , ak neexistoval žiaden záznam, tento select ošetril pomocou if , napríklad:
$query = "Select id, meno from zamestnanci where id= '100'";
$result = mysql_query($query) or die(mysql_error());

if ($result) 
{    
    //tu som dostal množinu záznamov a vypísal som napríklad záhlavie výstupu
    while($row = mysql_fetch_array( $result ))
    {
        id = $row['id'];
        $meno = $row['meno'];

        //vypisovanie údajov...
    }
}
else
{
    echo "ziaden zaznam"
}

Aká je pri foreach konštrukcia, tj aby po nulovom výskyte nerobil nič a foreach preskočil ?
    $id = 100;
    $stmt = $pdo->prepare("Select id, meno from zamestnanci where id = :id" );
    $stmt->bindValue(':id', $id);
    $stmt->execute();

    // TU nejaky if, ktory, ak je podmienka splnena vypíše napríklad záhlavie výstupu

    foreach ($stmt as $row)
    {
        $meno =  $row[meno'];
        //vyisovanie údajov
    }
        
        //ak nie je žiaden záznam potom vypísať napríklad Počet záznamov = 0    
Ďakujem !
Tomášeek
Profil
luma64:
To jako fakt? Ta podmínka bude fungovat na stejném principu. S foreach/while to nemá co dělat. Zkus přemýšlet.
N71
Profil *
Nikde nevytahuješ hodnoty, které po vykonání toho statementu pravděpodobně databáze vrátila. Například pomocí $stmt->fetchAll(). Kontrolu délky/prázdnosti pole už pak asi zvládneš (nebo dělat nebudeš, foreach nad prázdným polem neudělá nic).
Taps
Profil
luma64:
Pokud z databáze získáváš jen jeden řádek tak cyklus while nebo foreach je zbytečný, přesně tak ak píše Tomášeek
Kajman
Profil
Ona je blbě i ta první ukázka s while, protože $result bude v pořádku, i když bude výsledkem dotazu nula řádků. A pokud $result nebude ok (nepovedl se dotaz), skončí skript už na die.

U pdo je blbé, že rowcount nevrací u selectu počet řádků, proto bych také použil fetchAll a na získaném poli použil klasické count.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0