MySQL | Felder abrufen

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
  • Ich brauche mal wieder Hilfe mit MySQL. Also ich möchte einige Felder aus meiner Tabelle abrufen und sie in einem String speichern. Diesen String möchte ich dann in einen Integer umwandeln.
    Der Fehler: Wenn ich dann die Variable ausgeben will, kommt immer die Zahl 0. Bei dem String kommt nichts.
    So sieht mein Code aus:
    stock OnPlayerLogin(playerid)
    {
    MySQLConnect();
    new query[MAX_PLAYER_NAME+50];
    format(query, 150, "SELECT * FROM players WHERE name = '%s'", GetPName(playerid));
    mysql_query(query);
    mysql_store_result();
    new str_admin[100], str_level[100], str_money[100], str_bank[100], str_drogen[100], str_vip[100], str_wanteds[100];
    mysql_fetch_field_row(str_admin, "admin");
    mysql_fetch_field_row(str_level, "level");
    mysql_fetch_field_row(str_money, "money");
    mysql_fetch_field_row(str_bank, "bank");
    mysql_fetch_field_row(str_drogen, "drogen");
    mysql_fetch_field_row(str_vip, "vip");
    mysql_fetch_field_row(str_wanteds, "wanteds");
    mysql_free_result();
    mysql_close();
    PI[playerid][level] = strval(str_level);
    PI[playerid][admin] = strval(str_admin);
    PI[playerid][money] = strval(str_money);
    PI[playerid][bank] = strval(str_bank);
    PI[playerid][vip] = strval(str_level);
    PI[playerid][drogen] = strval(str_drogen);
    PI[playerid][wanteds] = strval(str_wanteds);
    return 1;
    }


    Meine Tabelle:
    id int(11)
    name varchar(100)
    pw varchar(255)
    admin varchar(255)
    level varchar(255)
    money varchar(255)
    bank varchar(255)
    drogen varchar(255)
    vip varchar(255)
    wanteds varchar(255)


    Warum varchar? Weil man mich darauf hingewiesen hat das mysql_fetch_field_row nur in Strings speichern kann. Ich hab mal vorsichtshalber auch mal gleich die Tabelle zu varchar gechanged ^^


    Ich würde mich freuen wenn ihr mir helft, und danke euch schon mal im vorraus.

  • Speicher integer doch auch als integer und nicht ans varchar....
    Und dann les per while schleife, mysql_fetch_row und sscanf aus und speicher es. Am besten wäre natürlich wenn du dierekt in ein enum rein speicherst, aber muss man nicht.

    stock OnPlayerLogin(playerid)
    {
    MySQLConnect();
    new str[512],Query[129];
    format(Query, sizeof(Query), "SELECT * FROM players WHERE name = '%s'", GetPName(playerid));
    mysql_query(Query);
    mysql_store_result();
    while(mysql_fetch_row(str))
    {
    sscanf(query,"p<|>{is[100]s[255]}iiiiiii", PI[playerid][admin],PI[playerid][level],PI[playerid][money],PI[playerid][bank],PI[playerid][drogen],PI[playerid][vip],PI[playerid][wanteds]);
    }
    mysql_free_result();
    mysql_close();
    return 1;
    }

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