bekomme bei mysql-abfrage nur eine zeile ausgegeben

  • folgender code liefert mir nur eine einzelne zeile, weiß jemand wieso?
    in der DB stehen auf jeden fall etliche mehr!
    die klasse DbTool funktioniert, ich glaub auch net, dass jemand ne funktion daraus braucht.. wenn doch fragen :)

    edit: obwohl doch evtl mag ja jemand den schwachsinn holeDaten($sql) sehen.. is halt alles nur erstma ne übung um mit php5 klarzukommen.

    PHP
    public function holeDaten($sql){
            $ergebnis = mysql_query($sql, $this->connection);
            return $ergebnis;
        }

    edit2: und wieso funktioniert das ganze bei diesem konstrukt?

    PHP
    while($array = mysql_fetch_array($allCategories)){
        echo $array['cl_sortkey']."<br />";
    }

    3 Mal editiert, zuletzt von synaptic (18. Juni 2009 um 13:53)

  • Ohne das Beispiel genau zu prüfen, nehme ich an, dass es wegen dem foreach Loop ist.
    So führst du bei jedem Loop ein mysql_fetch_assoc aus, also schreibst quasi das repräsentierte Array neu, und dann holt dir foreach nur das erste Array Element:

    PHP
    foreach (mysql_fetch_assoc($result) as $zelle)

    So hingegegen, führst du mysql_fetch_assoc nur einmal aus und so sollte es auch funktionieren:

    PHP
    $a_results = mysql_fetch_assoc($result);
    foreach ($a_results as $zelle)

    Vermeide, besonders bei Datenbankabfragen, wiederholten Code. Also auch wenn das erste Beispiel funktionieren würde, würdest du vielleicht 100 mal mysql_fetch_assoc() ausführen bevor dein Code durchlaufen wäre. Beim zweiten Beispiel hingegen nur einmal.

    Btw. in einer objektorientierten Umgebung kannst du mal mysql_fetch_object anschauen.

    Einmal editiert, zuletzt von phore (18. Juni 2009 um 14:51)

  • klingt alles recht logisch was du da schreibst :)
    jaa ein wenig nachdenken würds schon bringen, aber ich muss ja zu miener schande zugeben, dass mir ab und an wirklich der kopp qualmt vom ausdenken verschiedener methoden und die naheliegensten und logischsten dinge fallen gar nich auf, weils ja einfach zuuuu offensichtlich wäre/ist... ^^ :D