mysql_fetch_array() - Resource id #7 - error

  • Hallo an Alle!

    Möglicherweise kann mir hier jemand weiterhelfen, wäre wirklich sehr nett, denn ich bin irgendwie mit meinem latein am Ende.

    Ich bekomme bei einer SQL-Abfrage folgenden Fehler:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/w007744b/funcs/funcs_php.php on line 6
    Resource id #7

    Die zugehörige PHP-Code sieht wiefolgt aus

    #################################
    function newsAnzeigen() {
    $news = "";
    $news = mysql_query("SELECT threadid, topic, starttime, starter FROM bb1_threads WHERE boardid = 6 AND prefix != '' ORDER BY starttime DESC LIMIT 3");
    while($nachrichten = mysql_fetch_array($news)) {

    $news2 = mysql_query("SELECT p.message FROM bb1_posts p WHERE p.threadid = ".$nachrichten['threadid']." AND p.posttime = (SELECT MIN(posttime) FROM bb1_posts WHERE threadid = ".$nachrichten['threadid'].")");
    $nachrichten2 = mysql_fetch_array($news2);

    $datum = date("d.m.Y",$nachrichten['starttime']);

    $news .= '<div class="news-datum smallfont">'.$datum.'</div>';
    $news .= '<div class="leiste smallfont">'.utf8_decode($nachrichten['topic']).'</div>';
    $news .= '<div class="news-msg ruler">';
    $news .= '<div class="smallfont ruler">erstellt von '.utf8_decode($nachrichten['starter']).' am '.$datum.'</div>';
    $news .= '<span class="normalfont">'.utf8_decode($nachrichten2['message']).'</span>';
    $news .= '</div>';
    }
    return $news;
    }
    #################################

    Der Fehler liegt offenbar in diesen Zeilen:

    #################################
    $news = mysql_query("SELECT threadid, topic, starttime, starter FROM bb1_threads WHERE boardid = 6 AND prefix != '' ORDER BY starttime DESC LIMIT 3");
    while($nachrichten = mysql_fetch_array($news)) {
    #################################

    Im Ergebnis sollen also drei Einträge gelesen werden (LIMIT 3).

    Der Clou ist aber, der erste Eintrag wird komplett und ordnungsgemäß geladen. Dafür aber die beiden anderen nicht. Das SQL-Statement selbst ist auch korrekt. Hab es direkt in der Datenbank getestet über phpmyAdmin und es funktioniert.

    Wo ist also der Fehler? Liegt es an dem Resource id #7 ? Hab dazu schon gesucht und gesucht, aber nichts gefunden.

    Wäre für jeden kleinen Tipp/Hinweis, der mir weiterhelfen könnte, dankbar.

    Gruß

    Jakob

  • Lass dir mal mysql_error() ausgeben und poste dann was dabei rauskommt:

    PHP
    $news = mysql_query("SELECT threadid, topic, starttime, starter FROM  bb1_threads WHERE boardid = 6 AND prefix != '' ORDER BY starttime DESC  LIMIT 3") or die(mysql_error());

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • das hab ich schon gemacht. da kommt gar nichts raus. Die SQL ist ja offenbar auch korrekt. direkt in phpmyadmin getestet, funktioniert es einwandfrei.

  • Ok, ich hatte auch Tomaten auf den Augen. Du solltest in deiner while-Schleife auch nicht deine Ergebnis-Resource mit einem String überschreiben. Nach dem ersten Schleifendurchlauf ist $news halt keine Ergebnis-Resource mehr, sondern ein String.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Tatsache. Ich muß blind gewesen. Vielen Dank! Da kann man sich doch glatt an die Stirn fassen ;)