Probleme mit Funktionen im SQL Statement bei verwendung von prepared Statements

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

  • Probleme mit Funktionen im SQL Statement bei verwendung von prepared Statements

    Hallo,

    ich experementiere zur Zeit ein wenig mit Prepared Statements rum. Mir ist die Funktionsweise klar und "einfache" Statements funktionieren auch. Nur wenn ich SQL-Funktionen ins Spiel bringe, bekomme ich kein Result zurück.

    Beispiel:
    PHP-Code:
    ...

    $sql "Select * From tbl_user 
    where fld_user_name Like :username 
    And fld_user_password = PASSWORD(:lwd) 
    And fld_delete = 0 
    Order by fld_user_name"
    ;

    $this->stmnt $this->objDb->prepare($sql);
    $this->stmnt->bindParam(':username''test');
    $this->stmnt->bindParam(':lwd''test');
    $dbResult $this->stmnt->fetchAll();

    ... 
    Leider bekomme ich immer 0 Treffer zurück. Um Fehler in der Anbindung aususchließen, habe ich folgendes Probiert:


    PHP-Code:
    ...

    $sql "Select * From tbl_user 
    where fld_user_name Like :username 
    And fld_delete = 0 
    Order by fld_user_name"
    ;

    $this->stmnt $this->objDb->prepare($sql);
    $this->stmnt->bindParam(':username''test');
    $dbResult $this->stmnt->fetchAll();

    ... 
    Richtigerweise bekomme ich dann genau 1 treffer zurück. Um fehler in der SQL Syntax oder im Passwort auszuschließen habe ich folgendes Statement über phpMyAdmin (SQL-Feld) ausgeführt:

    PHP-Code:
    Select From tbl_user 
    where fld_user_name Like 
    'test' 
    And fld_user_password PASSWORD('test'
    And 
    fld_delete 
    Order by fld_user_name 
    Und auch hier bekam ich richtigerweise ein Treffer zurück. Es muss also mit der mit der Funktion PASSWORD() im SQL Statement im Zusammenhang mit Prepared Statements zu tun haben.

    Leider konnte ich zu diesem Problem nichts im Handbuch oder im Web finden. Wäre für jeden Tipp dankbar.

    Mit freundlichen Grüßen
    typolos
    Zuletzt geändert von typolos; 05.02.2009, 12:28.
    Bist Du nicht Teil der Lösung, bist Du Teil des Problems.

  • #2
    wärest du bitte so gütig und würdest den code umbrechen, damit keiner horizontal scollen muss.

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      http://dev.mysql.com/doc/refman/5.1/...ction_password
      The PASSWORD() function is used by the authentication system in MySQL Server; you should not use it in your own applications. For that purpose, consider MD5() or SHA1() instead.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Original geschrieben von wahsaga The PASSWORD() function is used by the authentication system in MySQL Server; you should not use it in your own applications. For that purpose, consider MD5() or SHA1() instead.
        Danke für den Hinweis, aber leider löst das nicht mein Problem. Auch mit MD5 oder SHA bekomme ich kein gültigen Treffer. Und ja ich habe das Passwort in der DB natürlich entsprechend angepasst.

        Ich finde auch nirgends ein Beispiel von prepared Statements in dem ein Funktion verendet wurde.

        Gruß typolos
        Bist Du nicht Teil der Lösung, bist Du Teil des Problems.

        Kommentar


        • #5
          Ich habe im mysqlperformanceblog heute morgen gelesen, dass Parameter an bestimmten Stellen wohl (buggy) nicht funktionieren (in einigen Versionen z.B. nicht bei LIMIT).
          Vielleicht hast du da auch einen Bug...

          Die Prepared-Statements sind bei MySQL leider mehr als mangelhaft...

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

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

          Kommentar

          Lädt...
          X