Simon: MYSQL Fehler!

Hallo,
ich verzweifel gerade, finde den Fehler nicht:

Fehlermeldung: Unknown column 'adf' in 'where clause'
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

Code:   if(isset($username) && ($userpass)) {
    $username = trim($username);
    $userpass = trim($userpass);
   $user_erg = mysql_query("SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.userpass, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.id WHERE user.status = 1 AND user.username = ".$username." AND user.userpass = ".$userpass."");
   echo mysql_error();
      if(mysql_num_rows($user_erg)>0) {
      $user_row = mysql_fetch_array($user_erg);
        $_SESSION[USER_ID] = $user_row['USER_ID'];
     $_SESSION[USERNAME] = $user_row['USERNAME'];
     $_SESSION[USERTASK] = $user_row['USERTASK_DESCRIPTION'];
     echo 'OK.';
   } else {
     $user_error[] = $GLOBALS['user_false_userpass'];
   }
  }

Gruß .. Simon

  1. Fehlermeldung: Unknown column 'adf' in 'where clause'
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

    steht doch alles da. Die Spalte 'adf' existiert nicht. Schau dir mal deine Datenbank an.

    Gruß,
    Flo

  2. Hi,

    Fehlermeldung: Unknown column 'adf' in 'where clause'

    und wie lautet die Where-Clause?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      und wie lautet die Where-Clause?

      Hä? - Steht doch da:
      ... WHERE user.status = 1 AND user.username = ".$username." AND user.userpass = ".$userpass." ...

      Gruß .. Simon

      1. Hi,

        und wie lautet die Where-Clause?
        Hä? - Steht doch da:

        nein. Da steht irgend welcher PHP-Code, aber keine Where-Clause.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          nein. Da steht irgend welcher PHP-Code, aber keine Where-Clause.

          Oh .. mmh ... dann hab ich das verwechselt. Dann gibt es keine Where-Clause, denn wenn ich nicht mal weiß as das ist, dann kann ich sie ja nicht nutzen!

          Gruß .. Simon

          1. Hi,

            Oh .. mmh ... dann hab ich das verwechselt. Dann gibt es keine Where-Clause, denn wenn ich nicht mal weiß as das ist, dann kann ich sie ja nicht nutzen!

            die Where-Clause ist das, was die Datenbank resultierend aus dem von Dir genannten Code erhält.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          2. Schau dir mal an was

            print ("SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.userpass, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.id WHERE user.status = 1 AND user.username = ".$username." AND user.userpass = ".$userpass."");

            so ausgibt, und vergleich das mit deinen Spalten in der Datenbank, dann wirst du den Fehler schnell finden!

  3. Hallo Simon,

    Fehlermeldung: Unknown column 'adf' in 'where clause'
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result

    diese Fehlermeldung besagt ja schon einiges!
    Jetzt musst Du nur noch herausfinden, warum MYSQL eine Spalte "adf" sucht, obwohl Du diese in deinem Quellcode gar nicht angegeben hast.
    Da bleibt nur noch der Inhalt der Variablen $username und $userpass übrig.

    Lass Dir diese Variablen mal ausgeben.
    Wenn Du darin den Fehler gefunden hast, dann überlege Dir mal, was Du noch alles in diese SQL-Anweisung über diese Variablen einschleusen hättest können. Eventuell wird Dir ja eine Sicherheitslücke in deinem Skript deutlich!

    Gruß
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hi,

      Lass Dir diese Variablen mal ausgeben.

      Ok habe ich gemacht und die Ausgabe stimmt auch!

      Wenn Du darin den Fehler gefunden hast, dann überlege Dir mal, was Du noch alles in diese SQL-Anweisung über diese Variablen einschleusen hättest können. Eventuell wird Dir ja eine Sicherheitslücke in deinem Skript deutlich!

      Nö wüsste nicht wo: Hier der gesamte Queltext:
        function get_user_examination($username, $userpass) {
        $user_error = array();
        if(!$username) {
         $user_error[] = $GLOBALS['user_error_username'];
         }
        if(!$userpass) {
          $user_error[] = $GLOBALS['user_error_userpass'];
        }
        if(isset($username) && ($userpass)) {
          $username = trim($username);
          $userpass = trim($userpass);
         $user_erg = mysql_query('SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.id WHERE user.status = 1 AND user.username = '.$username.' AND user.userpass = '.$userpass.'');
         echo mysql_error();
            if(mysql_num_rows($user_erg)>0) {
            $user_row = mysql_fetch_array($user_erg);
              $_SESSION[USER_ID] = $user_row['USER_ID'];
           $_SESSION[USERNAME] = $user_row['USERNAME'];
           $_SESSION[USERTASK] = $user_row['USERTASK_DESCRIPTION'];
           echo 'OK.';
         } else {
           $user_error[] = $GLOBALS['user_false_userpass'];
         }
        }
          return $user_error;
       }

      switch($HTTP_GET_VARS['action']) {
         case 'user_login':
            $username = $HTTP_POST_VARS['username'];
          $userpass = $HTTP_POST_VARS['userpass'];
         $user_error = get_user_examination($username, $userpass);
        break;
        default:
        break;
       }

      Gruß .. Simon

      1. Hallo Simon,

        Lass Dir diese Variablen mal ausgeben.
        Ok habe ich gemacht und die Ausgabe stimmt auch!

        Nach welchem ermessen? Nach deinem?
        Die Ausgabe zu posten wäre wichtiger gewesen als der gesamte Quelltext.

        Damit Du auch Cheatahs einwände verstehst rate ich Dir alles was zwischen mysql_query( ... ) steht am Bildschirm ausgeben zu lassen. Genau dann hast Du den SQL-Query, der an die Datenbank übergeben wird.
        Dein Quelltext ist nur PHP-Code, der erst noch verarbeitet werden muss. Die Suche nach einem Fehler ist deutlich leichter, wenn man weiß welche Daten zwischen den Prozessen hin und her wandern.

        Gruß
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Hallo,

          Die Ausgabe zu posten wäre wichtiger gewesen als der gesamte Quelltext.

          Hier mal die Ausgabe:
          SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.id WHERE user.status = 1 AND user.username = root AND user.userpass = root

          Also meiner Meinung nach stimmt die. Und wenn ich das in phpMyAdmin eingebe gibt er ja auch das richtig aus.

          Gruß .. Simon

          1. Hier mal die Ausgabe:
            SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.id WHERE user.status = 1 AND user.username = root AND user.userpass = root

            Also meiner Meinung nach stimmt die. Und wenn ich das in phpMyAdmin eingebe gibt er ja auch das richtig aus.

            Gibt es in den Tabellen cms_user oder cms_usertask eine Spalte namens root?
            Oder hast du vielleicht nur vergessen den String root zu quotieren bzw. das was die Variablen $username und $userpass liefern. Beachte auch, dass jemand ' und " in seinem Usernamen oder Passwort verwenden könnte... mysql_real_escape_string()

          2. Hallo,

            Hier mal die Ausgabe:
            SELECT user.id AS USER_ID, user.username AS USER_USERNAME, user.usertask, usertask.id, usertask.description AS USERTASK_DESCRIPTION FROM cms_user AS user LEFT JOIN cms_usertask AS usertask ON user.usertask = usertask.id WHERE user.status = 1 AND user.username = root AND user.userpass = root

            Error: Unknown column 'root' in 'where clause' ;-))

            Also meiner Meinung nach stimmt die. Und wenn ich das in phpMyAdmin eingebe gibt er ja auch das richtig aus.

            Nein, es würde die oben angegebene fehlermeldung kommen, wenn phpMyAdmin nicht von selbst Anführungsstriche um die Values 'root' machen.

            viele Grüße

            Axel