Announcement

Collapse
No announcement yet.

WHERE-Abfrage bringt Fehler

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WHERE-Abfrage bringt Fehler

    Hallo

    ich hänge hier an einer Abfrage, die mir folgenden Fehler im Browser ausgibt:
    Code:
    Abfrage fehlerhaft: 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 'AND A2.ID = AND C1.routesID = A1.ID AND C2.routesID = A2.ID AND B1.ID = C1.s' at line 4
    folgender Code steckt dahinter:
    PHP Code:
    if(isset($_POST['routes1']) && isset($_POST['routes2']))
    {
    $selid1 $_POST['routes1'];
    $selid2 $_POST['routes2'];

    //SQL-Query
    $query 'SELECT A1.name AS Start, A2.name AS Ziel, B1.name AS Umsteigen
    FROM routes A1, routes A2, stops B1, sr C1, sr C2
    WHERE A1.ID = '
    .$selid1.'
    AND A2.ID = '
    .$selid2.'
    AND C1.routesID = A1.ID
    AND C2.routesID = A2.ID
    AND B1.ID = C1.stopsID
    AND C1.stopsID = C2.stopsID
    AND A1.ID != A2.ID
    GROUP BY B1.name'
    ;

    $result $db->query($query);

        if (!
    $result)
            {
              die (
    'Abfrage fehlerhaft: '.$db->error);
            }
    echo 
    '<table>';
    echo 
    '<tr><th>Start</th><th>Ziel</th><th>Umstiegsm&ouml;glichkeit</th></tr>';
    while (
    $row $result->fetch_assoc())
    {
        echo 
    '<tr><td>'.$row[(Start)].'</td><td>'.$row[(Ziel)].'</td><td>'.$row[(Umsteigen)].'</td></tr>';
    }
    echo 
    '</table>'
    Dem Ganzen liegt eine MySQL-DB zugrunde mit den Tabellen routes, stops, sr, die ich in der Abfrage miteinander verknüpft habe.
    Diese Abfrage wird von einem Formular mit 2 Auswahllisten bedient und soll letztlich eine Tabellenausgabe bewirken.
    Ich vermute stark, dass es an den Variablen $selid1 und $selid2 liegt, die ich dazu verwendet habe, um die Auswahl aus den Auswahllisten zu verarbeiten.

    Meine Frage: geht das denn überhaupt in dieser Form? Also mit einer Auswahlliste funktioniert es so. Oder gibt es eine andere/eleganter Lösung für dieses Problem? Oder liegt das Problem gar nicht dort, wo ich es vermute?

    Grüße und vielen Dank im Voraus für eure Hilfe weil ich weiß echt nicht mehr weiter

  • #2
    Lass dir am besten mal das SQL das generiert wird ausgeben...
    Außerdem solltest du bei einem Group by auch aggregationsfunktionen für die Felder verwenden die nicht im Group by stehen.

    Sind die datenfelder alle integer? Ist sichergestellt das keine der variablen null ist.

    Comment


    • #3
      Originally posted by RiKo View Post
      Lass dir am besten mal das SQL das generiert wird ausgeben...
      Außerdem solltest du bei einem Group by auch aggregationsfunktionen für die Felder verwenden die nicht im Group by stehen.

      Sind die datenfelder alle integer? Ist sichergestellt das keine der variablen null ist.
      hi riko
      also das sql hab ich im phpmyadmin getestet, und das funktioniert und gibt das aus, was ich möchte. dort hab ich jedoch die where-bedingungen mit der $selid ausgelassen, da sich diese ja auf den php-code beziehen.

      Das was du zu dem Group by gesagt hast, habe ich nicht verstanden. Ich muss dies auch nicht zwingend in meiner Abfrage verwenden, aber interessant wäre es trotzdem, was du damit gemeint hast, da man ja nie auslernt.

      Zu den Datenfeldern: es sind nicht ausschließlich integer-werte, sondern auch varchar dabei. Diese sind auch NULL, die int-werte nicht.

      Comment


      • #4
        Die Fehlermeldung habe ich beheben können, durch Änderung der Syntax.
        Er arbeitet sich jetz durch den Code bis zum Erzeugen der Tabelle, bei der er den Kopf bereits generiert. Nur gefüllt wird sie nicht mit inhalten, den der auswahl gemachten eingaben entsprechend.

        Comment


        • #5
          Hallo,
          Originally posted by markies View Post
          ...also das sql hab ich im phpmyadmin getestet, und das funktioniert und gibt das aus, was ich möchte. dort hab ich jedoch die where-bedingungen mit der $selid ausgelassen, da sich diese ja auf den php-code beziehen.
          Und genau das ist ja der Knackpunkt warum du dir mal das generierte SQL ausgeben lassen sollst. U.U. ist das nämlich nicht das was du erwartest! (Zumindest deutet die Fehlermeldung darauf hin)

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            hallo falk

            dann werde ich es mir noch einmal ausgeben lassen.
            wobei ja die fehlermeldung mittlerweile behoben wurde
            die scheint ja folglich ok zu sein, nur wird die tabelle noch nicht gefüllt, was für mich so viel bedeutet wie, dass die "wertezuweisung" - wenn man das so sagen kann, nicht richtig erfolgt ist.

            grüße

            Comment


            • #7
              Originally posted by markies View Post
              ...wobei ja die fehlermeldung mittlerweile behoben wurde
              die scheint ja folglich ok zu sein, ...
              Was nicht heisst das dein Statement so aussieht wie du es erwartest! Und wurde der Fehler tatsächlich behoben oder nur die Fehlermeldung unterdrückt?

              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                nein, der fehler wurde behoben.
                würde ich die fehlermeldung unterdrücken, hab ich ja letztlich nichts davon.
                Zuletzt editiert von markies; 16.11.2010, 11:06.

                Comment

                Working...
                X