Abfrage funktioniert nicht!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage funktioniert nicht!

    Hi!

    Ich habe mich jetzt so langsam in dieses Metier eingearbeitet und es funktioniert soweit auch alles. nur ein Problem habe ich noch und schaffe es nicht, es zu lösen:
    Ich will aus einer Tabelle die Namen der anderen Tabellen auslesen, in denen ich dann wieder eine Abfrage durchführen will. Diese Tabelle heißt tabellen:

    $result=MYSQL_QUERY("SELECT * FROM tabellen order by feldname");

    for ($j=0; $j < mysql_numrows($result); $j++)
    {
    $result2=mysql_fetch_row($result2);
    $result3=MYSQL_QUERY("SELECT * FROM $result2[0] where name=$string");
    $anzahl_treffer= mysql_numrows($result3);

    for ($k=0; $j < $anzahl_treffer; $k++)
    {
    $result4=mysql_fetch_row($result3);
    echo "$result4[1]<br>";
    }
    }

    wenn ich das so ausprobiere, wird mir immer in der Zeile "for ($k=0; $j < $anzahl_treffer; $k++)" ein Fehler zurückgegeben: Warning: Supplied argument is not a valid MySQL result resource

    Wo liegt der Fehler?

  • #2
    Probiere es doch mal so
    Es sollte eigentlich gehen

    $result=MYSQL_QUERY("SELECT * FROM tabellen order by feldname");

    $num = mysql_num_rows($result);


    while(($result2 = mysql_fetch_row($result)))
    {
    $result3=MYSQL_QUERY("SELECT * FROM $result2[0] where name=$string");
    $anzahl_treffer= mysql_numrows($result3);

    }

    Gruß
    Arni
    Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban

    Kommentar


    • #3
      besser: Fehler abfangen

      Wenn du aus irgendeinem Grunde einen Fehler in der Query hast, wirst du immer die dir bekannte Fehlermeldung um die Ohren gehauen bekommen und bist genauso schlau wie vorher.

      Außerdem benutzt du in der inneren Schleife als Bedingung $j statt $k (also den Schleifenindex der äußeren Schleife).

      Tipps:
      1) frag ab, ob deine Query Erfolg hatte und gib die Fehlermeldung von mysql aus, wenn nicht.
      2) benutze in den fetch-Schleifen keine Zähler sondern behandle einfach Ergebnisse, solange welche kommen.

      ergo:
      Code:
      function myquery ($query) {
        $result = mysql_query ($query);
        if (!$result)
          echo '<br><b>', $query, ': ', mysql_error(), '</b><br>';
        return $result;
      }
      
      $result = myquery("SELECT * FROM tabellen order by feldname");
      if ($result) while ($result2 = mysql_fetch_row($result))
      {
        $result2 = mysql_fetch_row($result2);
        $result3 = mysql_query("SELECT * FROM $result2[0] where name=$string");
        if ($result3) while ($result4 = mysql_fetch_row($result3))
        {
          echo "$result4[1]<br>";
        }
      }
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        wahrscheinlich wird das Array im Query nicht verkraftet. Pack den Query erstmal in eine Variable und dann diese in den Query:

        Code:
        $anfrage="select * from result[$i] ....";
        $result3=mysql_query($anfrage);
        hat bei mir schon sehr oft geholfen. V.a. bei zweidimensionalen Arrays klappt's meist nur so. Keine Ahnung warum, scheint aber so zu sein...

        Kommentar


        • #5
          mehrere spalten abfragen?

          1000 dank, jetzt funktioniert es soweit.

          was ich jetzt noch am liebsten hätte, wäre, dass mehrere Spalten abgefragt werden, in meinem Fall also nicht nur die Spalte "Namen" sondern z.B. auch noch "Beschreibung" oder so.

          Infwiefern muss ich dann die Abfrage ""SELECT * FROM $ort[0] where name like '%$string%'" verändern?

          Gruß
          moe152

          Kommentar

          Lädt...
          X