mein Join sieht eigentlich gut aus, aber

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

  • mein Join sieht eigentlich gut aus, aber

    Hallo,

    ich möchte von einem "GET" Artikel die zugehörigen Lieferanten ermitteln.
    Leider bekomme ich die Fehlermeldung:

    right syntax to use near '[id] AND LID = lieferanten.ID AND AID = artikel.ID' at line 1

    PHP-Code:
    <?php
      
    echo "von Artikel:  $_GET[id]";  (das klappt)

    $select 'SELECT lieferanten.name'
    $from   ' FROM lieferanten, lookup, artikel';
    $where ' WHERE artikel.ID = $_GET[id]
                       AND LID = lieferanten.ID AND AID = artikel.ID'
    ;

     
    ?>

    <table>
    <tr><th>ein oder mehrerer Lieferanten:</th</tr>

    <?php
    $lieferant 
    mysql_query($select $from $where);

    while (
    $lief mysql_fetch_array($lieferant)) {
      echo 
    "<tr valign='top'>\n";
      
    $id $lief['ID'];
      
    $lieferantenname htmlspecialchars($lief['Lieferantenname']);
      echo 
    "<td>$lieferantenname</td>\n";
        echo 
    "</tr>\n";
    }
    ?>

    </table>

    ?>

  • #2
    Re: mein Join sieht eigentlich gut aus, aber

    vielleicht lässt du dir deinen Query mal ausgeben, bevor du ihn an die DB schickst?!
    PHP-Code:
    echo $select $from $where

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      und lernst mal grundlagen:
      http://www.php-resource.de/forum/sho...threadid=58111

      Kommentar


      • #4
        entschuldige
        wie geht das ohne Datenbank?

        meinst du damit einen Teil (welchen?) mit /* */
        vorübergehend ausklammern?

        Bitte einen wohlwollenden Tip!

        danke Pepsi

        Kommentar


        • #5
          brauchst du für nen echo eine DB??? oder worauf beziehst du dich?

          Dir wurde sogar der Quelltext für die Testausgabe genannt. Also mehr kann man gar nicht helfen...

          Kommentar


          • #6
            ja, mir wurde geholfen, (sehr)
            und ich beschäftige mich auch ernsthaft mit Euren Hinweisen.

            Die thread-Belehrung war ja schneller als meine
            "wohlwollende Bitte"

            Danke, alles ok
            melde mich bei Erfolg wieder.

            Gruss Pepsi

            Kommentar


            • #7
              ich schaffe es nicht, bin mir keiner Schuld bewusst.

              schade

              bei der echo abfrage gibt echo nur den gleichen Abfrage-Text aus.

              und Semikolon, Komma, usw, falls die falsch sind -? (thread)

              hab schon viereckige Augen

              Kommentar


              • #8
                (1) ist die von mysql angegebene Stelle meistens gerade das erste fehlerhafte Zeichen, in diesem Falle also [id] . Links davon ist alles Status=grün.

                (2) hilft das noch nicht weiter.

                (3) muss es heissen $where = " WHERE artikel.ID = '{$_GET['id']}'
                AND LID = lieferanten.ID AND AID = artikel.ID";
                also mit "..." und der Komplexen Form des Variabeln-Parsing.

                Kommentar


                • #9
                  Es gibt noch eine Variante mit Sicherung des user-input gegen sql-injection:

                  $where = " WHERE artikel.ID = '"
                  . mysql_real_escape_string($_GET['id'])
                  . "' AND LID = lieferanten.ID AND AID = artikel.ID";

                  Kommentar


                  • #10
                    vielen, vielen Dank.

                    aha, so ist das mit Punkt 1 !

                    leider habe ich ab jetzt computer-Verbot bekommen,
                    und werde Punkt 3 morgen gerne angehen.

                    nochmal vielen Dank

                    Kommentar


                    • #11
                      leider habe ich ab jetzt computer-Verbot bekommen
                      und das mit recht

                      tipp: schreib an den anfang deines scriptes: error_reporting(E_ALL); - dann bekommst du auch hinweise von php.
                      z.b., wie in deinem fall, wenn du mittels einer konstanten als schlüssel auf ein assoziatives array zugreifen möchtest:

                      echo "von Artikel: $_GET[id]"; (das klappt)
                      das klappt eben nicht.
                      id ist für php eine undefinierte konstante.
                      strings möchten eingerahmt werden: $_GET['id']

                      Kommentar


                      • #12
                        Original geschrieben von 3DMax
                        das klappt eben nicht.
                        id ist für php eine undefinierte konstante.
                        strings möchten eingerahmt werden: $_GET['id']
                        also bei mir geht das ohne Fehler durch, vielleicht hast du ein anderes php?

                        Ne, das liegt daran, weil die komplette Variable in dem String drin ist. Wenn sie außerhalb wäre, würde php meckern...
                        PHP-Code:
                        echo "von Artikel: " $_GET[id]; 
                        Die beste Variante wäre also
                        PHP-Code:
                        echo "von Artikel: " $_GET['id']; 
                        weil Variablen eigentlich generell nichts in Strings verloren haben...

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Ne, das liegt daran, weil die komplette Variable in dem String drin ist. Wenn sie außerhalb wäre, würde php meckern...
                          gerade probiert - habe die gleiche php-version

                          ... wieder etwas gelernt

                          Kommentar


                          • #14
                            Original geschrieben von 3DMax
                            gerade probiert - habe die gleiche php-version

                            ... wieder etwas gelernt
                            PHP-Code:
                            <?php
                            $_GET
                            ['id'] = "test";
                            echo 
                            "von Artikel: $_GET['id']";// (das klappt)
                            deine Annahme funktioniert nichtmal

                            Parser-Fehler: PHPDocument2 Zeile 3 - parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              deine Annahme funktioniert nichtmal
                              man, ey, musst du noch auf mir herumtrampeln, ich habe meine schmach doch schon zugegeben

                              war aber auch ein bisschen betriebsblindheit, da ich immer strings und variablen trenne - bin nicht so der fan von escapeorgien.
                              ich bevorzuge:
                              echo 'von Artikel: '.$_GET['id'];
                              echo 'von Artikel: ', $_GET['id'];
                              printf('von Artikel: "%s"', $_GET['id']);
                              Zuletzt geändert von 3DMax; 22.07.2006, 00:58.

                              Kommentar

                              Lädt...
                              X