MySQL String wird nicht herausgelesen

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
  • Guten Abend,


    folgendes Problem:
    Ich habe mit einem Code Daten von der .ini auf die MySQL-Tabelle übertragen, funktioniert problemlos.


    Wenn ich jetzt aber den Bangrund aus der Tabelle herauslesen will kommt:
    "Dein Account ist gebannt. Grund: " - Der Grund wird nicht angezeigt (null)


    Wenn ich allerdings den Wert in der Tabelle bearbeite, und enien anderen Text hineinschreibe,
    kann er es problemlos auslesen. In der Tabelle selbst sehe ich aber den korrekt übertragegen Bangrund.


    Bitte um Hilfe.

  • Dann ist offensichtlich etwas bei der Ausgabe bzw. beim Auslesen schief gelaufen. Mehr kann man dir jedoch ohne Einblicke nicht helfen.

  • new query[128];
    format(query,sizeof(query),"SELECT Bangrund FROM Accounts WHERE Nummer = '3'");
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(query);
    print(query);


    Diesen Code habe ich testweise bei OnGameModeInit.


    Wenn ich einen Spieler auslese, der einen veränderten Bangrund hat (wenn ich ihn verändert habe),
    schreibt er mir in die Konsole den richtigen Bangrund.
    Wenn ich ihn aber nicht verändere, schreibt er "(null)" in die Konsole.


    Brauchst du den Code für die .ini -> Tabelle Konvertierung?

  • Nehmen wir an ich habe 2 .inis in die MySQL-Tabelle konvertiert, beide sind gebannt.
    Bei beiden steht auch etwas in dem Banngrund.


    Wenn ich jetzt aus den zwei Dateien den Banngrund herauslesen möchte, würde es nicht funktionieren, warum auch immer.


    Wenn ich jetzt aber die Tabelle bearbeite und statt dem Banngrund einen anderen hineinschreibe,
    funktioniert das Auslesen problemlos..

    • Wie hast du die Tabelle übertragen? Stimmen Feldtypen mit Variablentypen überein?
    • Ist der Bangrund evt. länger als 128 Zeichen?
  • new dateipfad[35],string[256];
    format(dateipfad,sizeof(dateipfad),"%s.ini",Spieler[playerid][Name]);
    if(fexist(dateipfad))
    {
    new dateipfad2[50];
    format(dateipfad2,sizeof(dateipfad2),"Backups/%s.ini",Spieler[playerid][Name]);
    SendClientMessage(playerid,0xE3654DFF,"Dein Account wird nach MySQL umgeschrieben, bitte warten...");
    format(string,sizeof(string),"INSERT INTO Accounts (Name) VALUES ('%s')",Spieler[playerid][MySQL_Name]);
    mysql_query(string);
    new File:datei=fopen(dateipfad,io_read);
    new File:datei2=fopen(dateipfad2,io_write);
    for(new i=0;i<108;i++)
    {
    new wert[100],param[50];
    fread(datei,string);
    fwrite(datei2,string);
    strmid(param,string,0,strfind(string,"=",true));
    strmid(wert,string,strfind(string,"=",true)+1,strlen(string));
    switch(i)
    {
    case 0,3,92,106: format(string,sizeof(string),"UPDATE Accounts SET %s = '%s' WHERE Name = '%s'",param,wert,Spieler[playerid][MySQL_Name]); //String-Variablentyp
    case 50,51,59,60,61: format(string,sizeof(string),"UPDATE Accounts SET %s = '%f' WHERE Name = '%s'",param,floatstr(wert),Spieler[playerid][MySQL_Name]); //Flaot-Variablentyp
    default: format(string,sizeof(string),"UPDATE Accounts SET %s = '%i' WHERE Name = '%s'",param,strval(wert),Spieler[playerid][MySQL_Name]); //Integer-Variablentyp
    }
    mysql_query(string);
    }
    fclose(datei);
    fclose(datei2);
    fremove(dateipfad);
    SendClientMessage(playerid,0xE3654DFF,"Dein Account wurde erflogreich umgeschrieben!");
    }


    Erklärung zu:
    switch(i)
    {
    case 0,3,92,106: format(string,sizeof(string),"UPDATE Accounts SET %s = '%s' WHERE Name = '%s'",param,wert,Spieler[playerid][MySQL_Name]); //String-Variablentyp
    case 50,51,59,60,61: format(string,sizeof(string),"UPDATE Accounts SET %s = '%f' WHERE Name = '%s'",param,floatstr(wert),Spieler[playerid][MySQL_Name]); //Flaot-Variablentyp
    default: format(string,sizeof(string),"UPDATE Accounts SET %s = '%i' WHERE Name = '%s'",param,strval(wert),Spieler[playerid][MySQL_Name]); //Integer-Variablentyp
    }


    Die .ini hat 108 Zeilen, jede Zeile wird einzeln umformatiert.

  • Fehler gefunden.
    Ich hatte ein '\n' in die Tabelle übertragen, dann hat das Auslesen gestreikt.


    Das Thema zeigt wieder einmal, dass hier in diesem Forum nur bei kleineren Problemen geholfen wird.
    Sobald ein längerer Code gezeigt wird, kommt keine Antwort mehr....


    Schade.


    //Close.