Ankündigung

Einklappen
Keine Ankündigung bisher.

Verzwickte IF abfrage

Einklappen

Neue Werbung 2019

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

  • #16
    Oh man und ich soll raten was in $plattform drin steht? Was hast du bisher versucht, also Code zeigen... was für Fehlermeldungen kriegst du bei deinen Versuchen? Falls du ein Ergebnis kriegst wie sieht es aus und wie sollte es aussehen?

    Kommentar


    • #17
      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE Plattform = 'xbox360' AND user_games_db.PlayerID = OR useSpielGenrePlattformMatchBesitz
      und das ist der code den ich eigentlich für korrekt halte

      PHP-Code:
      $sql "SELECT spieledb.Spielname, spieledb.Genre, spieledb.Plattform, user_games_db.PlayerID FROM spieledb LEFT JOIN user_games_db ON spieledb.id = user_games_db.GameID  AND user_games_db.PlayerID = $userid WHERE Plattform = $plattform AND user_games_db.PlayerID = $userid OR user_games_db.PlayerID IS NULL ORDER BY spieledb.Spielname ASC"
      achja in $plattform = "xbox360";

      Kommentar


      • #18
        fehlt noch etwas?

        Kommentar


        • #19
          echo $sql; und das ergebnis da durch jagen : http://www.php.de/mysql/973-tool-sql-formatter.html

          und hör gefälligst auf zu pushen, wenn dir jemand antworten will dann wird er das schon tun

          Kommentar


          • #20
            Hab mal bischen gelesen und rumprobiert jetzt ist der fehler etwas anders

            Habe jetzt

            PHP-Code:
            $sql "SELECT spieledb.Spielname, spieledb.Genre, spieledb.Plattform, user_games_db.PlayerID FROM spieledb LEFT JOIN user_games_db ON spieledb.id = user_games_db.GameID  AND user_games_db.PlayerID = $userid WHERE spieledb.plattform = $plattform AND user_games_db.PlayerID = $userid OR user_games_db.PlayerID IS NULL ORDER BY spieledb.Spielname ASC"
            Dann kommt diese meldung

            Unknown column 'xbox360' in 'where clause'
            Etwas weiter oben wird die varibale $plattform der wert xbox360 geschrieben nach dem die daten gefilter werden sollen. Hoffe das sind genug infos damit ihr mit helfen könnt

            Kommentar


            • #21
              achja in $plattform = "xbox360";
              WHERE spieledb.plattform = $plattform
              Sollte eigentlich schon reichen.
              Unknown column 'xbox360' in 'where clause'
              Was soll das schon heißen. "Unbekannte Spalte 'xbox360'". Warum Spalte?
              Das siehst Du, wenn Du Dir die vollständige Query ausgeben läßt.
              PHP-Code:
              var_dump ($sql); 

              Kommentar


              • #22
                setzte $plattform in einfache Hochkommatas
                '$plattform'

                Kommentar


                • #23
                  habe per var dump das hier raus bekommen

                  string(329) "SELECT spieledb.Spielname, spieledb.Genre, spieledb.Plattform, user_games_db.PlayerID FROM spieledb LEFT JOIN user_games_db ON spieledb.id = user_games_db.GameID AND user_games_db.PlayerID = 94 WHERE spieledb.plattform = 'xbox360' AND user_games_db.PlayerID = 94 OR user_games_db.PlayerID IS NULL ORDER BY spieledb.Spielname ASC"
                  wenn ich $plattform in ' ' setzte bekomme ich die ausgabe oben aber ohne kommt nur die gleiche meldung wie vorher auch

                  Ich tippe mal darauf das er den wert spieledb.plattform mit nichts vergleichen kann weil per JOIN im Select eine tabelle ohne die passende spalte erstellt wurde. Aber dafür ist mein verständnis noch zu wenig.

                  Kommentar


                  • #24
                    nein...

                    strings wie deiner nun mal ist "xbox360" gehören in anführungszeichen oder einfache hochkommata.
                    Strings ohne ' oder " werden (genauso wie strings in `) als Felder interpretiert

                    Kommentar


                    • #25
                      Du kannst bei SQL auch die Werte von zwei Feldern eines Datensatzes vergleichen lassen. SELECT ... WHERE a.x=a.y
                      Woher soll der SQL Server jetzt wissen, was ein Feldname ist und was eine Zeichenkette zum Vergleichen ist? Oder konkret gefragt: Woher soll mySQL wissen, dass Du mit xbox360 nicht ein Feld mit diesem Namen meinst? Ganz einfach, Du markierst die Zeichenkette mit '
                      Du kannst auch Feldbezeichner mit ` markieren. Letzteres ist (meistens) optional, ersteres ist notwendig.
                      Code:
                      SELECT
                        `spieledb`.`Spielname`, `spieledb`.`Genre`, `spieledb`.`Plattform`,
                        `user_games_db`.`PlayerID`
                      FROM
                        `spieledb`
                      LEFT JOIN
                        `user_games_db`
                      ON
                        `spieledb`.`id` = `user_games_db`.`GameID`
                        AND `user_games_db.PlayerID` = 94
                      WHERE
                        `spieledb`.`plattform` = 'xbox360'
                        AND
                        (
                          `user_games_db`.`PlayerID` = 94
                          OR `user_games_db`.`PlayerID` IS NULL
                        )
                      ORDER BY
                        `spieledb`.`Spielname` ASC

                      Kommentar


                      • #26
                        Egal ob ich xbox360 mit ' ' oder " " schreibe oder den v´code von david versuche klappt es nicht bei den '' und "" kommt kein fehler aber es ändert sich auch nichts und bei dem code von david kommt dieser fehler

                        Unknown column 'user_games_db.PlayerID' in 'on clause'

                        Kommentar


                        • #27
                          ...weil ich da die ` falsch gesetzt habe. Die müssen da genauso gesetzt werden, wie bei den anderen Tabellen-/Feldbezeichnern.

                          Kommentar


                          • #28
                            Zitat von David Beitrag anzeigen
                            Die müssen da genauso gesetzt werden, wie bei den anderen Tabellen-/Feldbezeichnern.
                            Besser diese Backticks gleich ganz weglassen, dann kommst du auch nicht in Versuchung, reservierte Wörter als Bezeichner zu verwenden. Und der Code ist erst noch eher portabel.

                            Kommentar


                            • #29
                              Zitat von schimanski Beitrag anzeigen
                              achja in $plattform = "xbox360";
                              und in $userid steht? lass mich raten: nix

                              Kommentar


                              • #30
                                Zitat von lazydog Beitrag anzeigen
                                Besser diese Backticks gleich ganz weglassen, dann kommst du auch nicht in Versuchung, reservierte Wörter als Bezeichner zu verwenden. Und der Code ist erst noch eher portabel.

                                Richtig und wenn man dann noch Kürzel vor die Spaltennamen macht kann einem auch nichts passieren

                                Kommentar

                                Lädt...
                                X