abfrage nach zeitraum bringt fehler

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

  • abfrage nach zeitraum bringt fehler

    ich frage hier nach einem zeitraum, kunden nr (knr) und status ab, aber mir leuchtet der fehler einfach nicht ein.!

    fehlermeldung:
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:

    wenn ich die abfrage nach dem status und zeitraum raus lasse funktioniert die ausgabe, dass liegt also am select, aber wo??

    vielleicht seht ihr den fehler ja

    select befehl:
    SELECT
    tr.rnr, tr.knr, tk.vorname, tk.name, tk.versicherung, tr.status, tr.datum
    from
    kunden tk
    LEFT JOIN rechnung tr USING(knr)
    WHERE
    tk.knr='. $_POST['knr'].' and tk.status='. $_POST['status'].' and tk.datum < '. $_POST['datum1'].' and tk.datum > '. $_POST['datum2'].'
    ' );

    Zuletzt geändert von hdmnf; 02.02.2007, 10:00.

  • #2
    hast du auch

    1. Datenbankverbindung hergestellt?
    2. Datenbank selectiert?
    3. die Abfrage mit mysql_query abgesetzt?

    Denn die Fehlermeldung besagt, dass das Argument von mysql_fetch... ungültig ist

    Ausserdem schon mal von SQL-Injection gehört? Deine Anwendung ist offen wie ein Scheuentor.

    Kommentar


    • #3
      ->habe den post oben geändert

      ja sonst alles ok

      require_once 'config.inc.php';

      // Verbindung zum Datenbankserver
      mysql_connect( DB_HOST, DB_USER, DB_PASS )
      or die( 'Konnte keine Verbindung herstellen : ' . mysql_error() );

      // waehle Datenbank
      mysql_select_db( DB_NAME )
      or die ( 'Kann Datenbank "' . DB_NAME . '" nicht auswaehlen : ' . mysql_error() );

      $result = mysql_query( '
      SELECT ....

      Injection - nein noch nichts, ist wichtig oder? :-)
      zum glück wird die anwendung nur im intranet laufen

      Kommentar


      • #4
        http://www.php-resource.de/forum/sho...threadid=47906

        Kommentar


        • #5
          mach mal so

          PHP-Code:
          ...
          $sql "select ...";
          $result mysql_query($sql) or die(mysql_error()." - Abfrage: $sql");
          ... 
          kommt was raus?

          Kommentar


          • #6
            jetzt bekomme ich diese fehlermeldung:
            Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\

            24 ist die zeile wo die where abfragen drin stehen

            @penizillin du hast mir gestern schon einen klasse tipp gegeben, wenn du mir vielleicht heute noch einen geben könntest?

            http://www.php-resource.de/forum/sho...187#post509187

            bitte
            Zuletzt geändert von hdmnf; 02.02.2007, 10:20.

            Kommentar


            • #7
              dann korrigiere den parse error.

              Kommentar


              • #8
                ich glaube, ein Ratespiel ist zum WE eröffnet Leute komm rein und rate mit

                Kommentar


                • #9
                  Original geschrieben von hdmnf
                  jetzt bekomme ich diese fehlermeldung:
                  Parse error
                  Vorschlag: Du lässt von Datenbanken so lange die Finger, bis du wenigstens so weit mit der Syntax von PHP umgehen kannst, dass du die Ursache von blöden Syntaxfehlern selber finden kannst.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von hdmnf
                    jetzt bekomme ich diese fehlermeldung:
                    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\

                    24 ist die zeile wo die where abfragen drin stehen

                    @penizillin du hast mir gestern schon einen klasse tipp gegeben, wenn du mir vielleicht heute noch einen geben könntest?

                    http://www.php-resource.de/forum/sho...187#post509187

                    bitte
                    Wenn du ein Tipp willst: das liegt sicher daran, dass der Parser ein Error hat

                    Noch ein Tipp: hast du vllt ' oder " benutzt die du nicht maskiert hast?
                    Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                    - ...und solche Behauptungen in "falsches Resourcenmanagement"

                    Kommentar


                    • #11
                      Re: abfrage nach zeitraum bringt fehler

                      Original geschrieben von hdmnf

                      select befehl:
                      PHP-Code:
                      SELECT     
                              tr
                      .rnrtr.knrtk.vornametk.nametk.versicherungtr.statustr.datum
                      from     
                              kunden tk
                              LEFT JOIN rechnung tr USING
                      (knr
                      WHERE
                              tk
                      .knr='. $_POST['knr'].' and tk.status='. $_POST['status'].' 
                      and tk.datum '. $_POST['datum1'].' 
                      and tk.datum '. $_POST['datum2'].' 
                      ' ); 
                      eine frage ... wie sieht die gesamte Variable aus?

                      etwa so?

                      PHP-Code:
                      $sql="SELECT     tr.rnr, tr.knr, tk.vorname, tk.name,tk.versicherung, tr.status, tr.datum
                      FROM kunden tk
                      LEFT JOIN rechnung tr USING(knr) 
                      WHERE  tk.knr='. 
                      $_POST['knr'].' and tk.status='. $_POST['status'].' 
                      and tk.datum < '. 
                      $_POST['datum1'].' 
                      and tk.datum > '. 
                      $_POST['datum2'].' ' );"
                      oder so?
                      Original geschrieben von hdmnf

                      select befehl:
                      PHP-Code:
                      mysql_query('SELECT     
                              tr.rnr, tr.knr, tk.vorname, tk.name, tk.versicherung, tr.status, tr.datum
                      from     
                              kunden tk
                              LEFT JOIN rechnung tr USING(knr) 
                      WHERE
                              tk.knr='
                      $_POST['knr'].' and tk.status='$_POST['status'].
                      and tk.datum < '
                      $_POST['datum1'].
                      and tk.datum > '
                      $_POST['datum2'].
                      ); 
                      wenn zweites zutrifft siehe 2 POST von asp2php

                      wenn ich mir das so ansehe ...

                      mom

                      auf $sql=""; bezogen.
                      PHP-Code:
                      $sql="SELECT     tr.rnr, tr.knr, tk.vorname, tk.name,tk.versicherung, tr.status, tr.datum
                      FROM kunden tk
                      LEFT JOIN rechnung tr USING(knr) 
                      WHERE  tk.knr="
                      $_POST['knr'].
                      AND tk.status="
                      $_POST['status']."
                      AND tk.datum < '"
                      $_POST['datum1']."'
                      AND tk.datum > '"
                      $_POST['datum2']."'"
                      in der Annahme das
                      $_POST['knr'] und $_POST['status'] integer werte sind.
                      und die beiden Datums POSTs stringwerte die irgenntwie so aussehen
                      2007-01-01 oder 01.01.2007

                      gehe ich einfach mal davon aus der er sich nochmals mit dem hier beschäftigen sollte.
                      Strings / Zeichenketten und Singel sowie Double Quoted

                      ansonsten Siehe vorredner wegen SQL-Injection

                      ich hoffe es hilft.
                      So Long Wyveres
                      Bitte Beachten.
                      Foren-Regeln
                      Danke

                      Kommentar


                      • #12
                        der schaut so aus:

                        $sql = "SELECT
                        tr.rnr, tr.knr, tk.vorname, tk.name, tk.versicherung, tr.status, tr.datum
                        from
                        kunden tk
                        LEFT JOIN rechnung tr USING(knr)
                        WHERE
                        tk.knr='. $_POST['knr'].' and tr.status='. $_POST['status'].' and tr.datum < '. $_POST['datum1'].' and tr.datum > '. $_POST['datum2'].'
                        ";

                        $result = mysql_query($sql) or die(mysql_error()."$sql");

                        datums feld in db: yyyy.mm.dd

                        hmm, ok, gibt es da vielleicht eine sql funktion die das könnte?

                        ich habe da was vom umwandeln string nach float gelesen, könnte es so irgendwie gehen?

                        Kommentar


                        • #13
                          Original geschrieben von hdmnf
                          der schaut so aus:

                          $sql = "SELECT tr.rnr, tr.knr, tk.vorname, tk.name, tk.versicherung, tr.status, tr.datum
                          from kunden tk
                          LEFT JOIN rechnung tr USING(knr)
                          WHERE tk.knr='. $_POST['knr'].'
                          and tr.status='. $_POST['status'].'
                          and tr.datum < '. $_POST['datum1'].'
                          and tr.datum > '. $_POST['datum2'].'
                          ";

                          $result = mysql_query($sql) or die(mysql_error()."$sql");

                          datums feld in db: yyyy.mm.dd

                          hmm, ok, gibt es da vielleicht eine sql funktion die das könnte?

                          ich habe da was vom umwandeln string nach float gelesen, könnte es so irgendwie gehen?
                          erstens bitte ich dich wie alle anderen vor mir darum ...
                          Nutz die Code Tags für php.

                          zweitens
                          kein wunder das es NICHT geht

                          schau mal hier
                          PHP-Code:
                          $sql "SELECT tr.rnr, tr.knr, tk.vorname, tk.name, tk.versicherung, tr.status, tr.datum
                          from kunden tk
                          LEFT JOIN rechnung tr USING(knr) 
                          WHERE tk.knr='. 
                          $_POST['knr'].' 
                          and tr.status='. 
                          $_POST['status'].' 
                          and tr.datum < '. 
                          $_POST['datum1'].' 
                          and tr.datum > '. 
                          $_POST['datum2'].' 
                          "
                          ;

                          $result mysql_query($sql) or die(mysql_error()."$sql"); 
                          was fällt dir auf?
                          mir jede menge.
                          Ich erklärs dir einfach mal.

                          du nutzt die einfachen anführungszeichen an der falschen Stelle und da steckt dein FEHLER.

                          PHP-Code:
                          $sql="SELECT     tr.rnr, tr.knr, tk.vorname, tk.name,tk.versicherung, tr.status, tr.datum
                          FROM kunden tk
                          LEFT JOIN rechnung tr USING(knr) 
                          WHERE  tk.knr="
                          $_POST['knr'].
                          AND tk.status="
                          $_POST['status']."
                          AND tk.datum < '"
                          $_POST['datum1']."'
                          AND tk.datum > '"
                          $_POST['datum2']."'"
                          siehst du den unterschied?

                          drittens.

                          Wenn dein datum in der DB so vorliegt zb.: 2007.01.01
                          dann nutzt du warscheinlich den falschen datentype, ich geh mal davon aus das es [COLOR=red]VARCHAR[/COLOR] ist.
                          mach daraus [COLOR=red]DATE[/COLOR]
                          dadurch wird das datum so aussehen: 2007-01-01
                          Damit lässt sich dann viel leichter umgehen. ^^
                          Bitte Beachten.
                          Foren-Regeln
                          Danke

                          Kommentar


                          • #14
                            oh man, ich depp!

                            den typ date kann man miteinander vergleichen, weil es jetzt funktioniert!

                            vielen dank !!!

                            Kommentar


                            • #15
                              Original geschrieben von hdmnf
                              oh man, ich depp!

                              den typ date kann man miteinander vergleichen, weil es jetzt funktioniert!

                              vielen dank !!!
                              Danke danke

                              trotzdem weiter Lesen und Lernen! So das dir solche Fehler nicht mehr so leicht unter kommen.
                              Bitte Beachten.
                              Foren-Regeln
                              Danke

                              Kommentar

                              Lädt...
                              X