Pedda: Supplied argument is not a valid MySQL result resource

Hallo zusammen,

ich zermater mir hier schon seit einiger Zeit mein kleines Hirn :(
Eine while-Schleife bricht nach (seltsamerweise erfolgreichem) ersten Durchlauf mit "Supplied argument is not a valid MySQL result resource" ab ...
Folgender Code:
********************************************************************
$select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
$query = mysql_query($select, $db) or die(mysql_error());
while($select = mysql_fetch_row($query)) {
    $name = $select[0];
    $var1=$select[2];
    $var2=$select[3];
    $dif1=$var1-$var2;

$gro = "SELECT naff1, naff2 FROM tabelle1 WHERE id='$gro_id'";
    $suche = mysql_query($gro, $db) or die(mysql_error());
    while ($gro = mysql_fetch_row($suche)) {
 $var3=$gro[0];
 $var4=$gro[1];
 $dif2=$var3-$var4;

$punktealt = "SELECT punkte FROM tabelle2 WHERE name='$name'";
 $punkt = mysql_query($punktealt, $db) or die(mysql_error());
 while ($punktealt = mysql_fetch_row($punkt)) {
     $update = "UPDATE tabelle2 SET punkte_alt='$punktealt[0]' WHERE name='$name'";
     $query = mysql_query($update, $db) or die(mysql_error());
 }
 if ($var1==$var3 && $var2==$var4){
     $update = "UPDATE tabelle2 SET feld1=feld1+1 WHERE name='$name'";
     $upquery = mysql_query($update, $db) or die(mysql_error());
     $update2 = "UPDATE tabelle2 SET punkte=punkte+3 WHERE name='$name'";
     $upquery2 = mysql_query($update2, $db) or die(mysql_error());
 }
 else if ($dif1==$dif2) {
     $update3 = "UPDATE tabelle2 SET feld2=feld2+1 WHERE name='$name'";
     $upquery3 = mysql_query($update3, $db) or die(mysql_error());
     $update4 = "UPDATE tabelle2 SET punkte=punkte+2 WHERE name='$name'";
     $upquery4 = mysql_query($update4, $db) or die(mysql_error());
 }
 else if (($var1>$var2 && $var3>$var4) || ($var1<$var2 && $var3<$var4)) {
     $update5 = "UPDATE tabelle2 SET feld3=feld3+1 WHERE name='$name'";
     $upquery5 = mysql_query($update5, $db) or die(mysql_error());
     $update6 = "UPDATE tabelle2 SET punkte=punkte+1 WHERE name='$name'";
     $upquery6 = mysql_query($update6, $db) or die(mysql_error());
 }
    }
}
********************************************************************

Die Zeile, die er anmeckert ist
while($select = mysql_fetch_row($query)) {
(also die vierte)
.... kann mir jemand bitte sagen warum das passiert ?

Thnx & Gruss aus Münster

Pedda

  1. Hi,

    Eine while-Schleife bricht nach (seltsamerweise erfolgreichem) ersten Durchlauf mit "Supplied argument is not a valid MySQL result resource" ab ...

    bei welchem Statement, wie lautet es an der Stelle *exakt*?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      bei welchem Statement, wie lautet es an der Stelle *exakt*?

      die Stelle hatte ich geposted... ;-)
      Es ist die (im Post) vierte Zeile

      while($select = mysql_fetch_row($query)) {

      ...also wenn der Schleifedurchlauf zum zweitenmal anfängt..

      Gruss aus Münster

      Pedda

      1. Hi,

        die Stelle hatte ich geposted... ;-)

        aber nicht das Statement. Allenfalls dessen Erzeugung.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          aber nicht das Statement. Allenfalls dessen Erzeugung.

          $select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
          $query = mysql_query($select, $db) or die(mysql_error());
          while($select = mysql_fetch_row($query)) {
          ...
          ? das ist doch das statement ?

          Pedda

          1. Hi,

            $select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
            ? das ist doch das statement ?

            nein, die Generierung desselben. Kein Mensch(!) weiß, wie das Statement lautet.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    $select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";

    So, und was bitte steht jetzt in $select?
    PHP-Code ist fuer uns Helfer nutzlos, wenn es offensichtlich
    um ein MySQL-Problem geht.

    Ausgeben lassen, anschauen, ggf. hier posten.
    echo "Die Query lautet: $select";

    Vermutlich ist $wert leer, oder es enthaelt einen String...

    $query = mysql_query($select, $db) or die(mysql_error());

    Ich vermute zwar, dass das Problem in Deinem Query-String liegt, aber:
    Bist Du sicher, dass $db eine funktionierende Verbindungs-Kennung ist?
    Hast Du auch dort (d.h. irgendwo weiter oben), wo Du die Verbindung
    herstellst, eine Fehlerbehandlung eingebaut?
    Guck mal hier:
    http://www.php.net/manual/de/ref.mysql.php

    Deine Variablennamen scheinen mir nicht sehr schlau gewaehlt.
    Mit Query bezeichnet man normalerweise den SQL-Befehl,
    also das, was Du oben $select genannt hast.
    Das, was Du hier $query nennst, bezeichnet man oft als Resultat.

    while($select = mysql_fetch_row($query)) {

    Hier benutzt Du $select schon wieder, jetzt aber, um
    eine Zeile aus dem Resultat zu erhalten...

    Den Rest guck ich mir gar nicht erst an.

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Hallo,

      Vermutlich ist $wert leer, oder es enthaelt einen String...

      ... nö ;-)
      $wert ist ein INT (in meinen Tests 1 oder 2)
      Die Ausgabe von $select ist auch korrecht (WHERE tag_id=1)

      Bist Du sicher, dass $db eine funktionierende Verbindungs-Kennung ist?
      Hast Du auch dort (d.h. irgendwo weiter oben), wo Du die Verbindung
      herstellst, eine Fehlerbehandlung eingebaut?

      Jo - Verbindung ist definitiv ok

      Deine Variablennamen scheinen mir nicht sehr schlau gewaehlt.

      ...is klar, aber so heissen die Dinger nunmal *g*

      Den Rest guck ich mir gar nicht erst an.

      ...och...

      Gruss

      Pedda

  3. Hallo,

    ich zermater mir hier schon seit einiger Zeit mein kleines Hirn :(
    Eine while-Schleife bricht nach (seltsamerweise erfolgreichem) ersten Durchlauf mit "Supplied argument is not a valid MySQL result resource" ab ...
    Folgender Code:
    ********************************************************************
    $select = "SELECT name,tag_id,A1a,A1b FROM termine WHERE tag_id=$wert";
    $query = mysql_query($select, $db) or die(mysql_error());

    ^$query ist der resource identifier für die SELECT-Query.

    while($select = mysql_fetch_row($query)) {

    ...

    $query = mysql_query($update, $db) or die(mysql_error());

    ^hier wird $query entweder TRUE oder FALSE, jenachdem, ob die UPDATE-Query erfolgreich ist oder nicht.
         ...

    }

    Die Zeile, die er anmeckert ist
    while($select = mysql_fetch_row($query)) {

    Klar, weil beim zweiten Durchlauf der WHILE-Schleife das $query entweder TRUE oder FALSE, aber keinesfalls mehr ein resource identifier ist, welcher mit mysql_fetch_row() behandelt werden könnte.

    viele Grüße

    Axel

    1. Hallo,

      $query = mysql_query($select, $db) or die(mysql_error());
         ^$query ist der resource identifier für die SELECT-Query.

      $query = mysql_query($update, $db) or die(mysql_error());
              ^hier wird $query entweder TRUE oder FALSE, jenachdem, ob die UPDATE-Query erfolgreich ist oder nicht.

      Die Zeile, die er anmeckert ist
      while($select = mysql_fetch_row($query)) {
      Klar, weil beim zweiten Durchlauf der WHILE-Schleife das $query entweder TRUE oder FALSE, aber keinesfalls mehr ein resource identifier ist, welcher mit mysql_fetch_row() behandelt werden könnte.

      DAS sind doch mal Auskünfte *g* Thnx !
      Aber was tu ich dagegen ?
      Hab' keinen blassen Schimmer :(

      Gruss

      Pedda

      1. YESSSSS......
        ich hab's gefunden *g*
        THNX nochmal an alle !

        Gruss aus Münster

        Pedda

      2. Hallo,

        Aber was tu ich dagegen ?

        Waehle endlich sinnvolle Bezeichnungen, dann passiert sowas
        nicht so schnell. Wie gesagt, nimm Dir z.B.
        http://www.php.net/manual/de/ref.mysql.php#mysql.examples
        als Vorbild.

        Gaengig und verstaendlich sind z.B. folgende Variablennamen:
        $sql oder $query fuer das SQL-Statement
        $result oder so fuer das Resultat
        $line oder $zeile fuer eine einzelne Zeile
        u.s.w.

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/