Mysql inputtext speichern?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Möchte gerne das Spieler die Email speichern können, nur der Haken ist das ich mich erst seit heute mit Mysql wirklich auseinander setze ^^
    nur wie verwende ich den inputtext? Da es ja ein Text ist bzw. Buchstabenfolge sollte es ja VarChar sein.



    Gibt es somit eine funktion wie mysq_varchar oder wie wird es genau gemacht? :huh:

  • das ganze wird mit einem Query gemacht.
    new string[128];
    format(string, 128, "UPDATE Tabelle SET Email='%s' WHERE Name='%'",inputtext, variable mit den Spielernamen);
    mysql_query(string);


    und, du musst 'Tabelle' mit deinem Tabellennamen ersetzen.

    now @ glowfire CMS.

  • Danke für die fixxe Antwort, habe es nun so im Script:



    new string[128];
    format(string, 128, "UPDATE 'spieler' SET Email='%s' WHERE Name='%'",inputtext, SpielerInfo[playerid][pName]);
    mysql_query(string);
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Alter","Bitte gebe dein Geburtsdatum an","Weiter","Abbrechen");


    Leider speichert er den inputtext nicht, die Accounts sind in der Tabelle 'spieler' und der Text soll in der Tabelle unter 'Email' gespeichert werden.


    Ist etwas an dem Code oben falsch? ODer habe ich vllt doch noch etwas falsch gemacht? ;)


  • WHERE Name = '%s'
    und nicht
    WHERE Name = '%'


    Zusätzlich kann der Code dazu benutzt werden die Datenbank zu hacken ;)
    Stell dir mal vor: Für inputtext wird folgendes eingegeben:

    Zitat

    ', Password = 'Hallo' WHERE Name = 'Adminname' --


    Dann sieht deine Abfrage so aus:

    SQL
    UPDATE 'spieler' SET Email='', Password = 'Hallo' WHERE Name = 'Adminname' --' WHERE Name='%'


    das "--" bewirkt das der Rest(grün) nurnoch ein Kommentar ist und nichtmehr zu der Abfrage dazu gehört
    So einfach könnte dann jemand das Passwort von "Adminname" zu "Hallo" ändern(vll noch mit Verschlüsslungsmethode in MySQL) ;)


    Schau dir mysql_real_escape_string an, das bewrikt das die Abfrage nicht mehr verändert werden kann falls der Text zwischen ' symbolen steht

  • Du solltest etwas mehr auf die Zeichen achten
    mysql_real_escape_string(inputtext, inputtext);
    format(string, 128, "UPDATE `spieler` SET `Email`='%s' WHERE `Name`='%s'",inputtext, SpielerInfo[playerid][pName]);
    Du hast `` mit den vertauscht ' '
    Meist zickt er da rum

    All in all it's just another brick in the wall

  • Habe es nun auf zich Methoden versucht..

    mysql_real_escape_string(inputtext, inputtext);
    format(inputtext, 128, "UPDATE `spieler` SET `Email`='%s' WHERE `Name`='%s'",inputtext, SpielerInfo[playerid][pName]);
    mysql_query(inputtext);


    Nur er möchte die Email immer noch nicht abspeichern ;)


  • Das kann so auch nicht funktionieren!


    new str[128],name[24];
    GetPlayerName(playerid,name,24);
    mysql_real_escape_string(inputtext, inputtext);
    format(str,128,"UPDATE `spieler` SET `Email`='%s' WHERE `Name`='%s'",inputtext,name);
    mysql_query(str);


    Müsste funktionieren.


    Greetz
    #else


  • Danke hat funktioniert! Und wie oben damit man nicht einfach div. Befehle dran hängen kann sollte mann noch -- dran machen?
    Habe ich das richtig verstanden oder verhindert die real escape funktion das nun?

  • Sehr schön. ;)


    Das "--" ist nur in dem Code oben dabei, damit es also Kommentar gekennzeichnet ist.
    Brauchst Du also nicht. ;)


    In Pawn kein Kommentar machen kannst Du indem Du vor dem Text ein // machst. ;)
    An dem Code musst Du garnichts mehr verändern. ;)


    Greetz
    #else

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Achso, ja bei pawn weiß das ja eig. jeder ^^ nur mysql ist ne relativ neue geschichte für mich die ich versucht habe jahrelang zu umgehen ;) aber man muss ja mit der Zeit und Technik gehen :thumbup:


    Somit Close hier :)