MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)

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
  • naja die log sagt das die tabelle accounts nicht vorhanden ist ;)

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • Ne du kannst genauso mit PVars wie mit Enums arbeiten. Bei PVars sieht das dann so aus:

    //Laden:
    SetPVarInt(playerid,"Adminlevel",mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]));
    //Speichern:
    mysql_SetInt("accounts", "Adminlevel", GetPVarInt(playerid,"Adminlevel"), "Name", SpielerInfo[playerid][pName]);


    Ich hab grade mal bisschen versucht und gemacht, und hab da ne Frage. Muss ich wenn ich die PlayerVariable verwende trozdem ein enum mit SpielerInfo o.ä. verwenden?

  • Sehr gutes Tutorial!
    Leicht und Verständlich geschrieben!
    Hat mir sehr geholfen. :)


    // Edit.


    Ein kleine Frage:


    Ich habe mien Script nun auf MySQL umgestellt nun habe ich zwar herausgefunden wie ich Accounts erstelle, aber wie lösche ich den Accounts?


    z.B. Bei der registrierung wenn man diese abbricht?


    lg

    Einmal editiert, zuletzt von Dev ()

  • Herzlichen Dank ;)






    //Edit:


    Irgendetwas stimmt mit dem Speichern nicht:



    normal sollten die werte alle auf 0 sein.


    wenn man sich registriert ist alles noch richtig, doch sobald es gesaved wird ist es falsch..




    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    mysql_SetInt("accounts", "pLevel", PlayerInfo[playerid][pLevel], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pAge", PlayerInfo[playerid][pAge], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pHerkunft", PlayerInfo[playerid][pHerkunft], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pSex", PlayerInfo[playerid][pSex], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pMoney", PlayerInfo[playerid][pMoney], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pBankMoney", PlayerInfo[playerid][pBankMoney], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pAdmin", PlayerInfo[playerid][pAdmin], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pKills", PlayerInfo[playerid][pKills], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pDeahts", PlayerInfo[playerid][pDeaths], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pSpawn", PlayerInfo[playerid][pSpawn], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pFaction", PlayerInfo[playerid][pFaction], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pLeader", PlayerInfo[playerid][pLeader], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pSkin", PlayerInfo[playerid][pSkin], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pRank", PlayerInfo[playerid][pRank], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pCarLic", PlayerInfo[playerid][pCarLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pBikeLic", PlayerInfo[playerid][pBikeLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pTruckLic", PlayerInfo[playerid][pTruckLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pFlyingLic", PlayerInfo[playerid][pFlyingLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pWeaponLic", PlayerInfo[playerid][pWeaponLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pBoatLic", PlayerInfo[playerid][pBoatLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pFishingLic", PlayerInfo[playerid][pFishingLic], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pWanted", PlayerInfo[playerid][pWanted], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pPaycheck", PlayerInfo[playerid][pPaycheck], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pEP", PlayerInfo[playerid][pEP], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pEPLevel", PlayerInfo[playerid][pEP], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "pUpgradePoints", PlayerInfo[playerid][pUpgradePoints], "Name", PlayerInfo[playerid][pName]);
    }
    }
    return 1;
    }


    oder liegt es an loadplayer? :


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
    PlayerInfo[playerid][pLevel] = mysql_GetInt("accounts", "pLevel", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pSex] = mysql_GetInt("accounts", "pSex", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pHerkunft] = mysql_GetInt("accounts", "pHerkunft", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pAge] = mysql_GetInt("accounts", "pAge", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pMoney] = mysql_GetInt("accounts", "pMoney", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pBankMoney] = mysql_GetInt("accounts", "pBankMoney", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "pAdmin", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pKills] = mysql_GetInt("accounts", "pKills", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pDeaths] = mysql_GetInt("accounts", "pDeaths", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pSpawn] = mysql_GetInt("accounts", "pSpawn", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pFaction] = mysql_GetInt("accounts", "pFaction", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pLeader] = mysql_GetInt("accounts", "pLeader", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pSkin] = mysql_GetInt("accounts", "pSkin", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pRank] = mysql_GetInt("accounts", "pRank", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pCarLic] = mysql_GetInt("accounts", "pCarLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pBikeLic] = mysql_GetInt("accounts", "pBikeLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pTruckLic] = mysql_GetInt("accounts", "pTruckLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pFlyingLic] = mysql_GetInt("accounts", "pFlyingLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pWeaponLic] = mysql_GetInt("accounts", "pWeaponLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pBoatLic] = mysql_GetInt("accounts", "pBoatLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pFishingLic] = mysql_GetInt("accounts", "pFishingLic", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pWanted] = mysql_GetInt("accounts", "pWanted", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pPaycheck] = mysql_GetInt("accounts", "pPaycheck", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pEP] = mysql_GetInt("accounts", "pEP", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pEPLevel] = mysql_GetInt("accounts", "pEPLevel", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pUpgradePoints] = mysql_GetInt("accounts", "pUpgradePoints", "Name", PlayerInfo[playerid][pName]);
    }
    return 1;
    }

    3 Mal editiert, zuletzt von Dev ()

  • stock mysql_CheckAccount(playerid)
    {
    new Query[128],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);
    format(Query, sizeof(Query), "SELECT * FROM accounts WHERE Name = '%s'", Name);
    mysql_query(Query);
    mysql_store_result();
    return mysql_num_rows();
    }


    steht auf der ersten seite im tutorial

  • Ups :P
    Eine kleine Frage hätte ich noch, ich schaffe es nicht auszulesen wie viele Zeilen ein Tabellen Feld hat.
    In dem Falle BizID..
    Ich weiß das es irgendwie mit mysql_fetch_row geht aber ich schaffs nicht..

  • Ich hab jetzt folgenden Error bekommen, kann mir jemand erklären was das bedeuted?



    //EDIT: Hab den Fehler: Alter ist eigentlich eine MySQL Funktion die nur "ALTER" heisst X) Funktioniert alles Wunderbar nun, danke @ Maddin :)

    Einmal editiert, zuletzt von HEiTZER ()

  • Ich habe nun versucht das ganze in ein neues Script zu machen.


    Resultat: Die Accounts werden nicht gespeichert.



    Ich verwende den Anbieter db4free.net


    Muss ich sonst noch etwas hinzufügen? Eventuell das http://?


    Funktionieren tut es ja... er verbindet sich auch aber die Accounts werden nicht gespeichert :@


    Bitte hilfe...


    //EDIT: FAAAAAIL Warum geht das jetzt mit der SQL Datei von Maddin? :D

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • Hallo,


    ich habe einen indirekten Fehler gefunden.


    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    Mit dieser Funktion werden Variablen nicht immer richtig gespeichert habe ich festgestellt.
    Setze ich z.B. den Wert von
    new zahl = 1;
    BizzInfo[bizid][bPrice] = zahl
    und speichere ihn dan ab speichert er nicht richtig


    mysql_SetInt("business", "Price", BizzInfo[bid][bPrice], "bID", BizzInfo[bid][bID]);


    So speichert er immer in der ersten Zeile von mysql.
    Kopiere ich den stock allerdings und mache eine kleine änderung:


    stock mysql_SetInt2(Table[], Field[], To, Where[], Where2) // [] weg gemacht
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    // den 4ten mysql_real_escape_String entfernt !
    format(query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%d'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    Klappt alles reibungslos.


    Ich habe jetzt eine gefühlte ewigkeit versucht meine Biz Funktion zu reparieren und es hat nie richtig geklappt.
    Ich hoffe ihr müsst nicht ewig suchen und dieser Pos hilft euch.. bzw den newbies

  • Bei mir kommt immer der Fehler hier wenn ich den Server starten möchte:


    Script[gamemodes/mysqltext.amx]: Run Time error 19: "File or function is not found"


    Wenn ich compile bekomme ich keine Errors und keine Warnings. Kann mir da jemand helfen?


    Server.cfg:


    echo Executing Server Config...
    lanmode 0
    rcon_password testtesttest
    maxplayers 500
    port 7777
    hostname Testserver
    gamemode0 mysqltest
    filterscripts
    announce 0
    query 1
    plugins mysql streamer
    weburl www.dumdidum.de
    onfoot_rate 40
    incar_rate 40
    weapon_rate 40
    stream_distance 300.0
    stream_rate 1000
    maxnpc 10


    Benutze Windows auf meinem Home-Server



    mfG Scripter

  • Richtige MySQL Version?

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|