DB Abfrage nach Jahr > wie muss die Query für alle aussehen?

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

  • DB Abfrage nach Jahr > wie muss die Query für alle aussehen?

    Hallo!

    ich habe eine Frage: Ich habe hier eine Datenbank bei der folgendes abegefragt
    wird

    PHP-Code:
    SELECT idname FROM table WHERE year='$year' 
    $year kommt logischerweise als Variable von einer anderen Seite. Nun ist die Frage: wie muss ich denn die Query aufbauen, damit ich mir ALLE jahre anzeigen lassen kann? Irgendwie komme ich nicht drauf ...

    vielen dank und viele Grüße,

    tm

  • #2
    Hi sublevel1980

    Das . . .
    PHP-Code:
    . . . WHERE year='$year' 
    . . . ist doch nur ein Filter, den du einfach wegläßt, um alle Datensätze abzufragen.
    Dazu würde ich die Variable $year mit einem entspr. Wert belegen, und die Abfrage
    dann entspr. formulieren, z.B.:
    PHP-Code:
    <?php
    /*
    * $year wird von der "anderen" Seite mit 0 initialisiert zur Abfrage aller Datensätze . . . 
    */
    $year=0;
    /*
    * . . . oder mit einer Jahreszahl
    */
    // $year=1961, um bestimmte Datensätze abzufragen
    /*
    * Da ein Wert gleich "verschieden von 0" true ergibt, kann man hier einfach fragen, ob $year false ist
    */
    if(!$year){ 
     echo 
    "select id, name from tabelle";
    }else{
       echo 
    "select id, name from tabelle where year='$year'";
       }
    ?>
    Gruß
    Günni

    Kommentar


    • #3
      wie muss ich denn die Query aufbauen, damit ich mir ALLE jahre anzeigen lassen kann? Irgendwie komme ich nicht drauf ...
      Den WHERE Teil komplett weglassen!
      Wir werden alle sterben

      Kommentar


      • #4
        omg! Na klar so einfach ist das. Das habe ich einfach nicht bedacht....
        @guenn: vielen dank für die superausführliche Erläuterung!

        Tausend dank!

        sl

        Kommentar


        • #5
          Bobby Tables

          *korinthenkack*

          Das Weglassen der WHERE-Klausel führt aber nur dann zum gewünschten Ergebnis, wenn die Spalte "year" immer eine Jahreszahl enthält (also im Create-Table-Statement mit "NOT NULL" gekennzeichnet wurde). Wenn sie (bspw.) auch mit NULL befüllt werden kann, werden auch alle Datensätze ohne (konkreten) Jahres-Bezug ausgelesen.

          Falls also die Jahresspalte auch NULLs enthalten darf, würde eine Abfrage wie "WHERE [year] > 0" die Auswahl auf alle Datensätze mit vorhandenem Jahr beschränken. Falls tatsächlich negative Jahreszahlen vorkommen sollten, müsstest du auf Nicht-NULL testen ...

          Ergänzend @sublevel1980:
          Falls dein $year aus Benutzereingaben stammt, solltest du statt "String-Konkatenation" besser parametrisierte Queries (bspw. über PDO) verwenden, sonst bekommst du früher oder später Ärger (obligatorischer XKCD-Link).
          Zuletzt geändert von fireweasel; 18.03.2012, 10:34. Grund: typos
          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

          Kommentar


          • #6
            @firieweasel:
            aber wenn ich
            PHP-Code:
            select idname from tabelle 
            wie von geunni vorgeschlagen nutze, ist es doch unerheblich
            ob im Feld year überhaupt was drinsteht? Oder verstehe ich Dich falsch? Ich muss zugeben, dass ich noch nie was von dem was Du da schreibst gehört habe! Da muss ich mich mal einlesen. Im Moment klingt das wie Raketenforschung ; )

            sl

            Kommentar


            • #7
              http://www.nasa.gov/externalflash/RocketScience101/RocketScience101.html

              Zitat von sublevel1980 Beitrag anzeigen
              @firieweasel:
              aber wenn ich
              PHP-Code:
              select idname from tabelle 
              wie von geunni vorgeschlagen nutze, ist es doch unerheblich
              ob im Feld year überhaupt was drinsteht?
              Aus diesem Grund habe ich dem Absatz das Wort "ergänzend" vorangestellt. Für den Fall, dass du $year benutzt.

              ... Ich muss zugeben, dass ich noch nie was von dem was Du da schreibst gehört habe! Da muss ich mich mal einlesen.
              Dafür waren die Links zu Wikipedia (Grundlagen und Abhilfe), XKCD (anschauliches Beispiel) und PHP-Handbuch (Anwendung mit der Datenbank-Schnittstelle PDO) gedacht.

              Im Moment klingt das wie Raketenforschung ; )
              Du benutzt die "Rocket science"-Formulierung, hast aber noch nie was von SQL-Injections gehört? Das mag ich jetzt nicht so recht glauben ...
              Zuletzt geändert von fireweasel; 18.03.2012, 10:47. Grund: typos
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar

              Lädt...
              X