Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Steht etwas in der MySQL Log?
Und in der DB steht es auch richtig ? "DoubleEXP","DoubleWeed","DeathExplosion" jeweils als INT.
Hast du mal geschaut ob er den Wert in der DB schreibt und es evtl. nur nicht laden tut ?
Was soll da den geupdated werden wenn keine Einträge vorhanden sind.
Zum Eintragen musst du INSERT anstelle UPDATE benutzen.
Das aber nicht bei Save Account.
Dann eher in CreateAccount o.ä.
Hast du irgendwo eine Public vllt. wo du den Spieler Account bereits erstellst?
Bin leider am Handy kann da jetzt nicht ausführlich Posten.
Du musst natürlich einmal vorher ein Eintrag hinzufügen bevor du diesen dann Updaten(Speichern) kannst.
Hast du auch darunter dann "mysql_query(MySQL, Query);" gemacht damit er den auch ausführt ?
Bzw. schreibt er gar nichts in die Tabelle?
Du könntest einfach eine Abfrage beim Login machen die überprüft ob dieser Eintrag bereits existiert.
Und wenn es nicht existiert lässt du den Eintrag halt erstellen.
Beispiel:
stock DB_Count(Table[],Where[],Where2[])
{
new dbquery[130];
format(dbquery, sizeof(dbquery), "SELECT * FROM %s WHERE %s = %s", Table,Where,Where2);
mysql_query(MySQL,dbquery);
new num_rows, num_fields; cache_get_data(num_rows, num_fields);
return num_rows;
}
Abfrage wäre dann :
if(DB_Count("playerskills","Name",GetName(playerid)) == 0)
{
//Spieler hat noch kein Eintrag in der DB.
}
else
{
//Spieler hat bereits einen Eintrag.
}
Diese Funktion wäre jetzt dann auch nicht nur auf playerskills anwendbar sondern eig. jede Tabelle in der DB.
if(DB_Count(Tabelle,Where,WhereWert) == 0)
Und bei Kein Eintrag kannst du dann einfach den Query ausführen mit INSERT von oben.
*Ich hasse die PWN BBCode einrückung...
*Vllt. kann @Jeffry das ja nochmal begutachten. Da ich mich so sehr mit MySQL auch noch nicht auskenne.
Kannst du mal deinen Code posten bzw. wo du das drinne hast ?
Hmm, und den stock oben hast du auch im Script eingefügt ?
Also wenn ich diese Abfrage bei mir im Script mache geht es.
kannst du das mal Printen ?
also in der Stock
vor return num_rows; printf("DB_Count_Query: %s",dbquery);printf("DB_Count_Rows: %d",num_rows); einfügen.
Hmm, also ich sehe da irgendwie kein Fehler.
Die Abfrage stimmt.
Kannst du das selbe evtl. 2 mal mit einen Namen ohne TAG und Klammern testen ?
Ja, weil er als den Wert 0 bei der Abfrage zurück bekommt.
Normalerweise müsste er aber eine 1 zurück geben.
Hmm, ich bin leider auch etwas Ratlos.
Ersetz mal in der Stock das:
mysql_query(MySQL,dbquery);
durch
mysql_query(MySQL,dbquery,true);
und teste es nochmal.