MySQL Error #1064 - Problem von gestern auf heute.

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
  • Hey Breadfisher,


    Hab seit heute nen komisches Problem. Ich arbeite derzeit an einem Roleplay Script welches mit meiner MySQL Datenbank auf dem Linux Server verbunden ist.
    Bisher lief alles reibungslos, seit einer Woche bin ich hier am Gange. Spieler konnten sich bis heute problemlos einen Account erstellen und sich einloggen, alles wurde geladen & gespeichert wie gewollt. Dann wollte sich heute
    nen Kollege von mir registrieren damit ich mit ihm gewisse commands testen kann, doch dann speichert sich plötzlich der Account nicht. Fehlermeldung in der mysql_log.txt:
    "MySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
    einen Syntax Error kann ich ausschließen. Ich habe die query's seperat auf der Datenbank ausgeführt ohne Syntax Error, die Variablen wurden aber auch nicht verändert. Wie kann es sein das von jetzt auf gleich die Datenbank keine Lust mehr hat Accounts zu speichern?


    Stocks:
    stock PlayerSave(playerid)
    {
    print("Inside PlayerSave");
    //if(pInfo[playerid][loggedin]==0)return 1;
    print("Player is logged in");
    //Saves the Values listed below
    new query[255];
    print("Formating now");
    printf("Skin: %i Faction: %i",pInfo[playerid][skin],pInfo[playerid][faction]);
    format(query,sizeof(query),"UPDATE Players SET Level='%i',Money='%i',Adminlevel='%i',Faction='%i',Rank='%i',Wanted_Level='%i' WHERE ID='%i' ",pInfo[playerid][level],GetPlayerMoney(playerid),pInfo[playerid][adminlevel],pInfo[playerid][faction],pInfo[playerid][rank],GetPlayerWantedLevel(playerid),pInfo[playerid][id]);
    printf("%i Query Length",strlen(query));
    print("Formating done");
    mysql_function_query(dbindex,query,false,"","");
    print("Jumping out of SavePlayer");
    return 1;
    }


    Publics:
    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbindex);
    if(num_rows==1)
    {
    print("Inside OnPasswordResponse");
    //Password right
    pInfo[playerid][loggedin] = 1;
    pInfo[playerid][level] = cache_get_field_content_int(0,"Level",dbindex);
    SetPlayerScore(playerid,pInfo[playerid][level]);
    pInfo[playerid][id] = cache_get_field_content_int(0,"ID",dbindex);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"Money",dbindex));
    pInfo[playerid][adminlevel] = cache_get_field_content_int(0,"Adminlevel",dbindex);
    pInfo[playerid][faction] = cache_get_field_content_int(0,"Faction",dbindex);
    pInfo[playerid][rank] = cache_get_field_content_int(0,"Rank",dbindex);
    pInfo[playerid][skin] = cache_get_field_content_int(0,"Skin",dbindex);
    pInfo[playerid][wanted_level] = cache_get_field_content_int(0,"Wanted_Level",dbindex);
    SetPlayerWantedLevel(playerid,pInfo[playerid][wanted_level]);
    new Float:X = fInfo[pInfo[playerid][faction]][f_x],Float:Y = fInfo[pInfo[playerid][faction]][f_y],Float:Z = fInfo[pInfo[playerid][faction]][f_z],Float:A = fInfo[pInfo[playerid][faction]][f_a];
    SetSpawnInfo(playerid,pInfo[playerid][faction],pInfo[playerid][skin],X,Y,Z,A,0,0,0,0,0,0);
    SetPlayerColor(playerid,fInfo[pInfo[playerid][faction]][f_color]);
    print("Exiting OnPasswordResponse");
    }
    else
    {
    //Password wrong
    SendClientMessage(playerid,COLOR_RED,"The password is wrong.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Please type in your Password:","Okay","Abbrechen");
    }
    return 1;
    }


    Register/Login
    //Register
    if(dialogid==DIALOG_REGISTER)
    {
    print("Inside Register");
    if(response)
    {
    print("Inside Register Response 1");
    new name[MAX_PLAYER_NAME],query[128],password[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>MINIMUM_PASSWORD_LENGTH)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,password,dbindex);
    print("Formating query for register");
    format(query,sizeof(query),"INSERT INTO Players (Username,Password,Level,Money,Faction,Rank,Skin) VALUES ('%s','%s','%i','%i','%i','%i','%i')",name,password,pInfo[playerid][level]=1,pInfo[playerid][money]=1500,pInfo[playerid][faction]=0,pInfo[playerid][rank]=0,pInfo[playerid][skin]=26);
    print("Running query for register");
    mysql_function_query(dbindex,query,false,"","");
    print("Done");
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,COLOR_RED,"The Password has to be atleast 4 characters long.");
    Kick(playerid);
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }
    if(dialogid==DIALOG_FACTIONLIST)
    {
    if(response)
    {
    }
    else
    {
    }
    return 1;
    }
    //Login
    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],password[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(isnull(inputtext))
    {
    Kick(playerid);
    }
    if(strlen(inputtext)>0 && strcmp(inputtext,password) == 0)
    {
    mysql_escape_string(inputtext,password,dbindex);
    format(query,sizeof(query),"SELECT * FROM Players WHERE Username='%s' AND Password='%s'",name,password);
    mysql_function_query(dbindex,query,true,"OnPasswordResponse","i",playerid);
    }
    else if(!strcmp(inputtext,password))
    {
    //No entry
    Kick(playerid);
    SendClientMessage(playerid,COLOR_RED,"Please type in your Password.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Please type in your Password:","Okay","Cancel");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }


    Glauben könnt ihr mir auch das alle Tabellen sowie Datentypen ihrer richtigkeit entsprechen. Einen Fehler finde ich hier gerade nicht.

  • Wenn MySQL dir sagt da ist ein Fehler in der Syntax, dann ist das vermutlich auch so.
    Lass dir am besten mal die query vorm absenden ausgeben, dann kannst du schauen ob da wirklich alles ok ist nachdem die Werte eingesetzt wurden.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Wie gesagt, habe ich gemacht. Genauso habe ich es mit einem printf ausgegeben, alles so wie es soll. Syntax Fehler kann ich ausschließen, diese ganzen Befehle habe ich über meinen 1 Jährigen SQL Kurs hinweg mehr als genug gemacht und funktionieren tun sie außerhalb des Scripts auch, also ist dort kein Syntax Problem.