Ankündigung

Einklappen
Keine Ankündigung bisher.

Select join

Einklappen

Neue Werbung 2019

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

  • Select join

    Hi, Ich sitze jetzt schon ein paar tage an der Frage wie ich das Löse aber imer geht irgendetwas nicht...

    Ich habe ein MySQL mit mehreren Tabellen aus der ich 3 auslesen muss

    PHP-Code:
    id intval($_GET['id']);
    $connect mysql_connect("$dbhost""$dbuser""$dbpassword");
    mysql_select_db("$gs");
    mysql_query("SET NAMES 'utf8'"); 
    Funktioniert 2 Tabellen werden ausgelesen
    PHP-Code:
    $query "SELECT * FROM player_life_stats LEFT JOIN players ON player_id = id WHERE id = '$id'"
    Funktioniert 2 Tabellen werden ausgelesen
    PHP-Code:
    $query "SELECT * FROM abyss_rank LEFT JOIN players ON player_id = id WHERE id = '$id'"
    mache ich jetzt aber abyss_rank & player_life_stats geht nichts mehr
    PHP-Code:
    $query "SELECT * FROM abyss_rank LEFT JOIN player_life_stats LEFT JOIN players ON player_id = id WHERE id = '$id'"
    Wo liegt mein Fehler?

  • #2
    Hi,

    mysql_* ist veraltet. Nutze bitte PDO oder mysqli.

    Zudem beachte nochmal die Syntax, wenn du mehr als 2 Tabellen mit join verknüpfst, wie der genaue Aufbau/Syntax dabei ist! siehe u.a. hier: http://wiki.selfhtml.org/wiki/Datenb...mplexerer_Fall (bisschen nach unten scrollen)

    mfg Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Willkommen im Forum.

      Vermutlich fehlt dir beim ersten JOIN der ON-Teil.

      Die mysql-Erweiterung ist veraltet.

      - http://php-de.github.io/jumpto/faq/#deprecated-mysql (derzeit ganz unten auf der Seite)

      Kommentar


      • #4
        Ich poste am besten mal alles...


        PHP-Code:
        <?php


        $id 
        intval($_GET['id']);
        $connect mysql_connect("$dbhost""$dbuser""$dbpassword");
        mysql_select_db("$gs");
        mysql_query("SET NAMES 'utf8'");

        $query "SELECT * FROM player_life_stats LEFT JOIN players ON player_id = id WHERE id = '$id'";

        $result mysql_query($query);

        while (
        $row mysql_fetch_assoc($result)) {
            
        $exps $row['exp'];
            
        $custom_points $row['custom_points'];
            
        $creation_date $row['creation_date'];
            
        $last_online $row['last_online'];
            
        $ap $row['ap'];
            
        $rank $row['rank'];
            
        $all_kill $row['all_kill'];
                
        $hp $row['hp'];
            
        $mp $row['mp'];
            
        $fp $row['fp'];
            require 
        'function.php';
        }
        Ausgabe z.b.

        PHP-Code:
        <?php if (isset($hp)) echo $hp?>
        <?php 
        if (isset($name)) echo $name?>
        Also nutze ich nur 2 funktioniert es egal welches von beiden, nutze ich 3 geht nichts mehr...

        Kommentar


        • #5
          Ich poste am besten mal alles...
          Ändert nichts am grundsätzlichen Sachverhalt: mysql_* ist veraltet und du solltest auf mysqli oder PDO umsteigen. Link mal gecheckt und Syntax verglichen?
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Zitat von mermshaus
            Vermutlich fehlt dir beim ersten JOIN der ON-Teil.
            Ansonsten ist Debugging immer eine gute Idee.

            - http://php-de.github.io/jumpto/sql/
            - http://phpforum.de/forum/showthread.php?t=240643

            Kommentar


            • #7
              Ja gelesen aber ich bin Anfänger und nicht fortgeschritten deswegen ist für mich hier der Bahnhof ^^
              Ich erweitere ein älteres Script und das komplett auf mysqli umzustellen ist für diese zwecke vorerst unzweckmäßig sich die ganze arbeit zu machen, deswegen würde ich gern hierzu eine lösung haben.

              Kommentar


              • #8
                Zitat von mermshaus Beitrag anzeigen
                Zitat von mermshaus
                Vermutlich fehlt dir beim ersten JOIN der ON-Teil.
                Ansonsten ist Debugging immer eine gute Idee.

                - http://php-de.github.io/jumpto/sql/
                - http://phpforum.de/forum/showthread.php?t=240643
                Du kannst die Query auch mal im phpMyAdmin oder so ausführen, um zu sehen, was sie so liefert oder nicht liefert.

                Kommentar


                • #9
                  Dann schreibt er Column 'player_id' in on clause is ambiguous

                  Kommentar


                  • #10
                    Ja komm, bisschen Eigeninitiative.. nicht alles vorkauen lassen...

                    https://www.google.at/search?q=Colum...e+is+ambiguous

                    erster Treffer:

                    http://stackoverflow.com/questions/6...t-is-ambiguous

                    Übrigens:

                    PHP-Code:
                    $connect mysql_connect("$dbhost""$dbuser""$dbpassword"); 
                    mysql_select_db("$gs");
                    // ...
                    $query "SELECT * FROM player_life_stats LEFT JOIN players ON player_id = id WHERE id = '$id'"
                    http://php-de.github.io/jumpto/code-...n-doppelquotes

                    http://php-de.github.io/jumpto/code-smells/#select-

                    LG
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Werd ich mich mal einlesen im Moment raf ich es nicht warum es mit 2 geht aber nicht mit 3, kann man es denn nicht auch so lösen?

                      PHP-Code:
                      // Abfrage 1
                      $connect mysql_connect("$dbhost""$dbuser""$dbpassword");  
                      mysql_select_db("$gs"); 
                      $result1 mysql_query($sql$db);
                      if (!
                      $result$sql select andere Abfrage;
                      // Abfrage 2
                      $sql select ...
                      $result2 mysql_query($sql$db);
                      if (!
                      $result2$sql select andere Abfrage;
                      // Abfrage 3
                      $sql select ...
                      $result3 mysql_query($sql$db);
                      if (!
                      $result3$sql select andere Abfrage;
                      // Zusammenfuehren:
                      $result $result1.$result2.$result3
                      // Ausgeben
                      while ($myrow mysql_fetch_array($result) {
                      ...

                      Im Grunde möchte ich nur 3 Tabellen statt 2 aus einer DB auslesen....

                      Kommentar


                      • #12
                        Zeig mal deine aktuelle query, mit der du es zuletzt versucht hast.
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          PHP-Code:
                          $query "SELECT * FROM abyss_rank LEFT JOIN player_life_stats LEFT JOIN players ON player_id = id WHERE id = '$id'"
                          ergibt einen Fehler
                          PHP-Code:
                          $query "SELECT * FROM abyss_rank LEFT JOIN players ON player_id = id WHERE id = '$id'"
                          PHP-Code:
                          $query "SELECT * FROM player_life_stats LEFT JOIN players ON player_id = id WHERE id = '$id'"
                          gehen beide weil nur 2 sind statt 3 oben. Er gibt dann halt das fehlende nicht aus aber alle anderen Ausgaben sind korrekt.

                          Kommentar


                          • #14
                            PHP-Code:
                            SELECT    
                            FROM      abyss_rank 
                            LEFT JOIN player_life_stats 
                            LEFT JOIN players 
                              ON      player_id 
                            id 
                            WHERE     id 
                            '$id' 
                            ergibt einen Fehler
                            Welchen Fehler? Aber nicht den Ambigous? Da fehlt doch noch immer ein ON ?!
                            The string "()()" is not palindrom but the String "())(" is.

                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              ergibt
                              PHP-Code:
                              You have an error in your SQL syntaxcheck the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id = '$id' LIMIT 0, 30' at line 6 
                              ändere ich die $id in eine bestehende id weil er ja nicht weiss welche er auslesen soll kommt
                              PHP-Code:
                              You have an error in your SQL syntaxcheck the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id = '324741' LIMIT 0, 30' at line 6 
                              mache ich allerdings
                              PHP-Code:
                              SELECT 
                              FROM abyss_rank
                              LEFT JOIN players 
                              ON player_id 
                              id
                              WHERE id 
                              =  '324741' 
                              gibt er es komplett aus ohne Fehler

                              Kommentar

                              Lädt...
                              X