Abfrageproblem

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

  • Abfrageproblem

    Folgendes Problem meiner Spieledatenbank:

    die Spalten:

    "game" enthält:
    mau-mau
    Schach
    Poker

    "spielerid" enthält
    1,3,4
    2
    1,2,3

    nun die Abfrage

    Code:
    $Spieler=1;
    
    $abfrage = "SELECT * FROM Spieledatenbank Where '$Spieler' IN (spielerid)";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
        {
         echo  $row->game;
         echo '<br>';
        }
    Ich bekomme jedoch nicht die Zeile 1 mit mau-mau und 3 mit Poker herraus, sondern gar nichts.
    Wie regele Ich das richtig?

    Gruß
    MarioNetz

  • #2
    Re: Abfrageproblem

    Original geschrieben von marionetz
    SELECT * FROM Spieledatenbank Where '$Spieler' IN (spielerid)
    du hast die select-syntax in diesem punkt offenbar noch gar nicht verstanden, zumindest was die formulierung von WHERE-klausel und dabei insb. die benutzung von IN() betrifft.

    schau dir doch bitte erst mal im mysql-manual die erklärungen und beispiele dazu an.


    und verwende bitte mysql_error() - wie es hier im forum schon hunderttausend male gesagt wurde!


    $ergebnis = mysql_query($abfrage) or die(mysql_error());

    dann bekommst du auch die fehlermeldung der DB angezeigt.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Mal ganz davon ab, das Dein Datenbank-Entwurf scheinbar einem nicht ganz gesunden Hirn entsprungen ist ... schau Dir mal die Funktion FIND_IN_SET() in der MySQL-Dokumentation an ... http://dev.mysql.com/doc/mysql/en/String_functions.html
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        Meine Frage war eigentlich, wie es richtig funktioniert? Dass der Vergleich nach WHERE falsch ist, weiß Ich wohl. Dafür braucht auch niemand ne Fehlermeldung.
        Nur wie kann Ich den Vergleich machen?

        zu
        FIND_IN_SET(str,strlist)

        das geht zusammen mit WHERE ? Das habe Ich nähmlich bisher nirgends in einem Manual gefunden. Bin noch gar nicht auf die Idee gekommen. Ist, glaube Ich, ja auch kein Vergleichsoperator?

        freundlichste Grüße
        MarioNetz

        ps. Danke für das "kranke Hirn" (ein Kompliment?)
        Zuletzt geändert von marionetz; 30.06.2004, 16:41.

        Kommentar


        • #5
          Original geschrieben von marionetz
          zu
          FIND_IN_SET(str,strlist)

          das geht zusammen mit WHERE ? Das habe Ich nähmlich bisher nirgends in einem Manual gefunden. Bin noch gar nicht auf die Idee gekommen. Ist, glaube Ich, ja auch kein Vergleichsoperator?
          Hast Du's ausprobiert?! ... willst Du meine Kenntnisse und Fähigkeiten in Zweifel ziehen ... ?!
          Original geschrieben von marionetz
          ps. Danke für das "kranke Hirn" (ein Kompliment?)
          Hat jemand "krankes Hirn" gesagt? ... defacto ist der Entwurf scheinbar Scheisse genug ... um diese Frage stellen zu müssen ... schon mal was von ER-Modellierung gehört?!

          Langsam gehen mir die dummen Sprüche von euch Nichtwissern echt auf den Zeiger ... !
          Zuletzt geändert von goth; 30.06.2004, 16:45.
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            Habs ausprobiert .... bakam aber das, was Ich erwartet habe ... fehler.

            Ich habe folgendes ausgetauscht

            Code:
            '$Spieler' IN (spielerid)
            gegen
            Code:
            FIND_IN_SET($Spieler,spielerid)
            Hat also nicht geklappt. Hat jemand nen besseren Vorschlag. Wie es denn geht?

            Gruß
            MarioNetz

            Kommentar


            • #7
              Und Du meinst also nur weil da jetzt FIND_IN_SET() steht kannst Du die Hochkommas um $Spieler einfach mal so weglassen ... ?! Man man man ... das sind Grundkenntnisse ... !

              Original geschrieben von marionetz
              Habs ausprobiert .... bakam aber das, was Ich erwartet habe ... fehler.
              Was Du erwartet hast ist ziemlich wursch .. wenn ich sage das funktioniert ... dann funktioniert es ... basta ! Es sei denn Du hast 'ne uralt MySQL ... !
              Zuletzt geändert von goth; 30.06.2004, 23:40.
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                "spielerid" enthält
                1,3,4
                2
                1,2,3
                in der Spalte "spielerid" steht wirklich 1,2,3 in einer Zelle?
                wenn ja, lösch die Tabelle und denk nochmal darüber nach.


                und zu goth´s Vorschlag

                die Funktion ist doch Dokumentiert.

                Quelle: mysql.com
                FIND_IN_SET(zeichenkette,zeichenkettenliste)

                Gibt einen Wert 1 bis N zurück, wenn die Zeichenkette zeichenkette in der Liste zeichenkettenliste ist, die aus N Teilzeichenfolgen besteht. Eine Zeichenkettenliste ist eine Zeichenkette, die aus Teilzeichenfolgen zusammen gesetzt ist, die durch `,'-Zeichen getrennt sind. Wenn das erste Argument eine Zeichenketten-Konstante ist und das zweite eine Spalte des Typs SET, wird die FIND_IN_SET()-Funktion optimiert, Bit-Arithmetik zu benutzen! Gibt 0 zurück, wenn zeichenkette nicht in zeichenkettenliste ist oder wenn zeichenkettenliste die leere Zeichenkette ist. Gibt NULL zurück, wenn eines oder beide Argumente NULL sind. Diese Funktion funktioniert nicht korrekt, wenn das erste Argument ein `,' enthält:

                mysql> SELECT FIND_IN_SET('b','a,b,c,d');
                -> 2
                mfg
                marc75

                <Platz für anderes>

                Kommentar


                • #9
                  hier könnt ihr mit dem ot weitermachen ... ist ja nicht zu aushalten.
                  http://www.php-resource.de/forum/sho...threadid=41130

                  back2topic
                  Kissolino.com

                  Kommentar


                  • #10
                    Danke goth ... stimmt es geht wunderbar.


                    dich liebhabendes
                    MarioNetz

                    Kommentar


                    • #11
                      Sag' ich doch ... hatte ich auch nicht anders erwartet ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar

                      Lädt...
                      X