Prob mit MySQl: Accounts werden nicht erstellt :/

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
  • Hallo!
    Hab jetzt ne MySql Datenbank. Connecten ist erfolgreich. Aber wenn ich mich registriere, dann wird der Account in der MySQl Tabelle nicht erstellt.
    Wenn ich auf meinem PC mit Xampp einen MySQl Server aufmache funktioniert alles einwandfrei. Nur bei einer DB, die nicht auf meinem PC ist gehts nichts =(
    Bitte helft mir. Code ist überall der gleiche. Wie kann ich prüfen, ob die Tabelle richtig gefunden wurde oder geht das automatisch?
    Habe immernoch das MySQl System von RFT.


    EvilToastBrot.

  • Oke Habs gemacht, aber kann da jetzt keine Fehler rauslesen. Wäre gut, wenn sich jemand die Zeit nehmen würde, das mal durchzulesen. Danke =)
    Hier der Inhalt der mysql_log.txt:


    [22:25:37]


    [22:25:37] ---------------------------


    [22:25:37] MySQL Debugging activated (11/30/10)


    [22:25:37] ---------------------------


    [22:25:37]


    [22:25:56] >> mysql_real_escape_string( Connection handle: 1 )


    [22:25:56] CMySQLHandler::EscapeString(EvilToastBrot); - Escaped 13 characters to EvilToastBrot.


    [22:25:56] >> mysql_query( Connection handle: 1 )


    [22:25:57] CMySQLHandler::Query(SELECT id FROM spieler WHERE LOWER(Name) = LOWER('EvilToastBrot') LIMIT 1) - Successfully executed.


    [22:25:57] >> mysql_store_result( Connection handle: 1 )


    [22:25:57] CMySQLHandler::StoreResult() - Result was stored.


    [22:25:57] >> mysql_num_rows( Connection handle: 1 )


    [22:25:57] CMySQLHandler::NumRows() - Returned 0 row(s)


    [22:25:57] >> mysql_real_escape_string( Connection handle: 1 )


    [22:25:57] CMySQLHandler::EscapeString(EvilToastBrot); - Escaped 13 characters to EvilToastBrot.


    [22:25:57] >> mysql_query( Connection handle: 1 )


    [22:25:57] CMySQLHandler::Query(SELECT id FROM spieler WHERE LOWER(Name) = LOWER('EvilToastBrot') LIMIT 1) - Successfully executed.


    [22:25:57] >> mysql_store_result( Connection handle: 1 )


    [22:25:57] CMySQLHandler::StoreResult() - Result was stored.


    [22:25:57] >> mysql_num_rows( Connection handle: 1 )


    [22:25:57] CMySQLHandler::NumRows() - Returned 0 row(s)


    [22:26:00] >> mysql_query( Connection handle: 1 )


    [22:26:00] CMySQLHandler::Query(UPDATE spieler SET Admin = '0' WHERE Name = 'EvilToastBrot') - Successfully executed.


    [22:26:00] >> mysql_query( Connection handle: 1 )


    [22:26:00] CMySQLHandler::Query(UPDATE spieler SET Skin = '0' WHERE Name = 'EvilToastBrot') - Successfully executed.


    [22:26:00] >> mysql_query( Connection handle: 1 )


    [22:26:00] CMySQLHandler::Query(UPDATE spieler SET Passwort = 'test' WHERE Name = 'EvilToastBrot') - Successfully executed.


    [22:26:00] >> mysql_query( Connection handle: 1 )


    [22:26:00] CMySQLHandler::Query(UPDATE spieler SET Team = '0' WHERE Name = 'EvilToastBrot') - Successfully executed.


    [22:26:00] >> mysql_query( Connection handle: 1 )


    [22:26:00] CMySQLHandler::Query(UPDATE spieler SET Money = '5555' WHERE Name = 'EvilToastBrot') - Successfully executed.


    [22:26:00] >> mysql_query( Connection handle: 1 )


    [22:26:00] CMySQLHandler::Query(INSERT INTO spieler (Name, Passwort) VALUES ('EvilToastBrot', 'test')) - An error has occured. (Error ID: 1364, Field 'Admin' doesn't have a default value)



    //Edit: Inhalt vergessen :D

  • [22:26:00] CMySQLHandler::Query(INSERT INTO spieler (Name, Passwort) VALUES ('EvilToastBrot', 'test')) - An error has occured. (Error ID: 1364, Field 'Admin' doesn't have a default value)


    Das bedeutet normalerweise das du beim regristireren auch bei Admin mit INSERT ne 0 eintragen musst, da das Feld Admin in der Tabelle keinen Default wert hat.


    MFG
    SoulBreaker

  • Das bedeutet normalerweise das du beim regristireren auch bei Admin mit INSERT ne 0 eintragen musst, da das Feld Admin in der Tabelle keinen Default wert hat.


    MFG
    SoulBreaker


    Ahh Danke =)
    Habe jetzt versucht den Standart Wert auf 'NULL' zu setzen, aber dann bringt mir phpmyadmin folgenden Fehler:


    SQL
    SQL-Befehl:
    
    
    ALTER TABLE `spieler` CHANGE `Team` `Team` INT( 11 ) NOT NULL DEFAULT NULL
    
    
    MySQL meldet: Dokumentation
    #1067 - Invalid default value for 'Team'


    Bitte helft mir ;(
    Kenn mich nicht aus mit Mysql 8|


    Danke =)


    Evil.

  • Hier:
    mysql_SetInt("spieler", "Admin", Player[playerid][Admin], "Name", pn(playerid));
    mysql_SetInt("spieler", "Skin", Player[playerid][Skin], "Name", pn(playerid));
    mysql_SetString("spieler", "Passwort", Player[playerid][PW], "Name", pn(playerid));
    mysql_SetInt("spieler", "Team", Player[playerid][Team], "Name", pn(playerid));
    mysql_SetInt("spieler", "Money", Player[playerid][Money], "Name", pn(playerid));
    CreatePlayerAccount(pn(playerid), Player[playerid][PW]);
    format(str, sizeof str, "Willkommen, %s! Du hast dich erfolgreich registriert!", pn(playerid));
    SendClientMessage(playerid, Grey, str);
    SendClientMessage(playerid, Grey, "Wenn du Hilfe benötigst, dann tippe /report [Nachricht], um die Admins zu kontaktieren!");
    Spawned[playerid] = 1;
    FirstSpawn[playerid] = 1;
    SetSpawnInfo(playerid, Player[playerid][Team], Player[playerid][Skin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);

  • Speicherst du auch irgendwo den Namen des Spielers? :D ansonsten ists klar dass da nix gespeichert wird ^^
    Ich speicher den Namen, die IP und das eingegebene PW direkt nachm registrieren, die restlichen Variablen kommen beim Disconnect, das ganze sieht so aus
    format(query, sizeof(query), "INSERT INTO Accounts (Name, Passwort, IP) VALUES ('%s', '%s', '%s')", pname, inputtext, pip);
    mysql_query(query);

  • Speicherst du auch irgendwo den Namen des Spielers? :D ansonsten ists klar dass da nix gespeichert wird ^^
    Ich speicher den Namen, die IP und das eingegebene PW direkt nachm registrieren, die restlichen Variablen kommen beim Disconnect, das ganze sieht so aus
    format(query, sizeof(query), "INSERT INTO Accounts (Name, Passwort, IP) VALUES ('%s', '%s', '%s')", pname, inputtext, pip);
    mysql_query(query);


    Der Name wird mit CreatePlayerAccount gespeichert.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Die Ganze Dialogabfrage:
    if(dialogid == DReg3)
    {
    new str[128]/*, path[60]*/;
    if(response)
    {
    Player[playerid][Herkunft] = 1;
    SendClientMessage(playerid, Grey, "Du hast deinen Spawn auf Los Santos festgelegt!");
    }
    if(!response)
    {
    Player[playerid][Herkunft] = 2;
    SendClientMessage(playerid, Grey, "Du hast deinen Spawn auf San Fierro festgelegt!");
    }
    Player[playerid][Money] = NoobCash;
    /*if(INI_Open(path))
    {


    INI_WriteInt("Money", NoobCash);
    INI_WriteInt("Herkunft", Player[playerid][Herkunft]);
    INI_WriteInt("Admin", Player[playerid][Admin]);
    INI_Save();
    INI_Close();
    }*/
    new pp[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pp, MAX_PLAYER_NAME);
    CreatePlayerAccount(pp, Player[playerid][PW]);
    mysql_SetInt("spieler", "Admin", Player[playerid][Admin], "Name", pn(playerid));
    mysql_SetInt("spieler", "Skin", Player[playerid][Skin], "Name", pn(playerid));
    mysql_SetString("spieler", "Passwort", Player[playerid][PW], "Name", pn(playerid));
    mysql_SetInt("spieler", "Team", Player[playerid][Team], "Name", pn(playerid));
    mysql_SetInt("spieler", "Money", Player[playerid][Money], "Name", pn(playerid));
    format(str, sizeof str, "Willkommen, %s! Du hast dich erfolgreich registriert!", pn(playerid));
    SendClientMessage(playerid, Grey, str);
    SendClientMessage(playerid, Grey, "Wenn du Hilfe benötigst, dann tippe /report [Nachricht], um die Admins zu kontaktieren!");
    Spawned[playerid] = 1;
    FirstSpawn[playerid] = 1;
    SetSpawnInfo(playerid, Player[playerid][Team], Player[playerid][Skin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    }


    Und CreatePlayerAccount:


    stock CreatePlayerAccount(PName[], PPassword[])
    {
    new query[109];
    format(query, sizeof(query), "INSERT INTO spieler (Name, Passwort) VALUES ('%s', '%s')", PName, PPassword);
    mysql_query(query);
    return true;
    }

  • Danke =)
    Bin eben neu in Sachen MySQl und versteh da relativ wenig^^ Aber jetz funzt alles =)
    Danke =)
    EvilToastBrot.


    //Edit: Lösung: Bei Null in der MySQl Tabelle einen Hacken hingesetzt und Standartwert NULL gemacht.