NodeJS Query wird falsch ausgeführt

  • OT: Wer sich mit NodeJS nicht beschäftigt bzw. mit Javascript kann aus dem Thread gehen. Da es nicht selbst an der Query liegt, sondern am escapen der Variable.

    Guten Tag!
    Ich hab ein kleines Problem mit der MySQL-Lib für NodeJS bzw. mit dem escapen einer Variable. Wenn ich die Variable escape bzw. die Eingabe, wird die Query fehlerhaft ausgeführt.
    Auch wenn ich folgendes mache:

    JavaScript
    \" ' + username + '\"


    ist die Query trotzdem fehlerhaft. Da irgendwie noch mehr backslashes in der Query selbst hinzugefügt werden und noch mehr Anführungszeichen. idk. Mad world :kappa::aws:
    Query die ausgeführt wird & inkl. den Daten:
    http://pastebin.com/Ht0vn3Xa
    Code:
    http://pastebin.com/uXyCbDFs

    Wie man bei der Query selbst sieht:

    Code
    sql: 'SELECT * FROM users WHERE username = \'\'test\' AND password = \'098f6bcd4621d373cade4e832627b4f6\' LIMIT 1',

    Fehlermeldung:

    Code
    Couldn't execute query: Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'test'' AND password = '098f6bcd4621d373cade4e832627b4f6' LIMIT 1' at line 1

    Wenn ich das mysql.escape(); weg lasse, funktioniert alles... //but Sicherheit geht vor, kek
    Ich hoffe dass ihr mir bei meinem Problem helfen könnt.

    Tschau!

  • Liegt daran vielleicht der Fehler? Im Error steht auch, dass da ein ' zu viel ist, soweit ich weiß.

    Wenn du dir meinen Code anschauen würdest, würdest du wissen, dass ich die nicht selbst hinzufüge. Die werden einfach beim escapen eingefügt, was mich total aufregt.
    Komme nicht mehr weiter, xd

  • da du die mysql library verwendest kannst du das escape einfach weglassen, das sollte automatisch geregelt werden. außerdem vestehe ich nicht, wieso du überhaupt in deiner query diese backslashes benutzt ohne eine regex.... ^^

    Einmal editiert, zuletzt von Pothead (1. Dezember 2015 um 18:33)

  • mysql.escape macht automatisch ein Escape mit \. Da du manuell nochmal ein Backslash davor setzt, kommen letztendlich 2 Backslashes raus. Du brauchst die Backslashes also nicht:

    JavaScript
    var sql = "SELECT * FROM users WHERE username = '" + mysql.escape(username) + "' AND password = '" + password + "'";
  • mysql.escape macht automatisch ein Escape mit \. Da du manuell nochmal ein Backslash davor setzt, kommen letztendlich 2 Backslashes raus. Du brauchst die Backslashes also nicht:

    JavaScript
    var sql = "SELECT * FROM users WHERE username = '" + mysql.escape(username) + "' AND password = '" + password + "'";

    Danke! Fehler endlich gelöst.
    Der Thread kann geschlossen werden.

    @Aeterox;
    @FileY

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!