String does not get sent to mysql properly
#1

PHP код:
enum pData
{
    
mcrimes[1024],
        
}; 
PHP код:
function InsertCrime(playerididlevelreason[])
{
    if(
PlayerData[id][WantedLevel] == 0PlayerData[id][TrackLose] = 30
    new 
inistring[256], longstring[1024];
    
ini PlayerData[id][WantedLevel];
    if(
level PlayerData[id][WantedLevel] > 6PlayerData[id][WantedLevel] = 6;
    else 
PlayerData[id][WantedLevel] = level PlayerData[id][WantedLevel];
    
SetPlayerWantedLevel(id,PlayerData[id][WantedLevel]);
    
ini PlayerData[id][WantedLevel]-ini;
    
    
format(stringsizeof(string), "You've commited a Crime (%s). W: +%d, Reporter: %s."reasoniniPlayerData[playerid][Name]);
    
SendClientMessage(idCOLOR_LIGHTREDstring);
    
format(stringsizeof(string), "Current Wanted Level: %d"PlayerData[id][WantedLevel]);
    
SendClientMessage(idCOLOR_YELLOWstring);
    
    new 
date[50];
    new 
y,m,d,h,mi,s;
    
getdate(y,m,d);
    
gettime(h,mi,s);
    
format(date,sizeof(date),"%02d.%02d.%d %02d:%02d:%02d",d,m,y,h,mi,s);
    
    
strmid(MDCData[id][PlayerData[id][MDC]][mDate], date0strlen(date), 255);
    
strmid(MDCData[id][PlayerData[id][MDC]][mReporter], PlayerData[playerid][Name], 0strlen(PlayerData[playerid][Name]), 255);
    
strmid(MDCData[id][PlayerData[id][MDC]][mReason], reason0strlen(reason), 255);    
    
    
format(longstringsizeof(longstring), "%s\n%s: %s - %s"longstringdatereasonPlayerData[playerid][Name]);
    
mysql_format(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%d' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]);
    
mysql_tquery(SQLlongstring"""");
    
    
PlayerData[id][MDC] += 1;
    
PlayerData[id][Crimes] += 1;
    
    new 
str[128];
    
mysql_format(SQLstr,128,"UPDATE `users` SET `WantedLevel`='%d' WHERE `ID`='%d' LIMIT 1",PlayerData[id][WantedLevel],PlayerData[id][ID]);
    
mysql_tquery(SQLstr"""");
    
mysql_format(SQLstr,128,"UPDATE `users` SET `LastCrime`='%s', `LastReporter`='%s' WHERE `ID`='%d' LIMIT 1",reason,PlayerData[playerid][Name],PlayerData[id][ID]);
    
mysql_tquery(SQLstr"""");
    
mysql_format(SQLstr,128,"UPDATE `users` SET `LastDate`='%s', `Crimes`='%d' WHERE `ID`='%d' LIMIT 1",date,PlayerData[id][Crimes],PlayerData[id][ID]);
    
mysql_tquery(SQLstr"""");
    return 
1;

I am editing this script, i added mcrimes to that enum but i have a problem here: mysql_format(SQL, longstring, 1024, "UPDATE `users` SET `mcrimes`='%d' WHERE `ID`='%d' LIMIT 1", longstring, PlayerData[id][ID]);

Instead of getting a string in mysql i get some random number when the function is executed, mcrimes collumn in mysql is varchar of 1024. Any idea what am i doing wrong?
Reply
#2

the error is here
PHP код:
 mysql_format(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%d' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]); 
    
mysql_tquery(SQLlongstring""""); 
yopu need to put '%s' not %d
PHP код:

 mysql_format
(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%s' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]); 
    
mysql_tquery(SQLlongstring""""); 
Reply
#3

Quote:
Originally Posted by Mister0
Посмотреть сообщение
the error is here
PHP код:
 mysql_format(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%d' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]); 
    
mysql_tquery(SQLlongstring""""); 
yopu need to put '%s' not %d
PHP код:

 mysql_format
(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%s' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]); 
    
mysql_tquery(SQLlongstring""""); 
Thanks +rep that helped me get some data into the database but i have another problem now. The string does not get formatted like i want it to.

On player connect i get their old crimes string like this
PHP код:
    cache_get_field_content(0"mcrimes"PlayerData[playerid][mcrimes], SQL129); 
And then when insercrime is called i do:

PHP код:
    format(longstringsizeof(longstring), "%s"PlayerData[playerid][mcrimes]);
    
    
format(longstringsizeof(longstring), "%s\n%s: %s - %s"longstringdatereasonPlayerData[playerid][Name]);
    
mysql_format(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%s' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]);
    
mysql_tquery(SQLlongstring"""");
    
strmid(PlayerData[playerid][mcrimes], longstring0strlen(longstring), 1024); 
The problem i have is that i never get to insert multiple crimes just the first one goes into the database the next ones don't get formatted like this: %s\n%s: %s - %s
Reply
#4

ok here is the actual problem

PHP код:
    format(longstringsizeof(longstring), "%s"PlayerData[id][mcrimes]);
    
    
format(longstringsizeof(longstring), "%s\n%s: %s - %s"longstringdatereasonPlayerData[playerid][Name]);
    
mysql_format(SQLlongstring1024"UPDATE `users` SET `mcrimes`='%s' WHERE `ID`='%d' LIMIT 1"longstringPlayerData[id][ID]);
    
mysql_tquery(SQLlongstring"""");
    
strmid(PlayerData[id][mcrimes], longstring0strlen(longstring), 1024); 
strmid(PlayerData[id][mcrimes], longstring, 0, strlen(longstring), 1024); does not put longstring in PlayerData[id][mcrimes]

i also tried PlayerData[id][mcrimes] = longstring;

I want PlayerData[id][mcrimes] to match what i have in the mcrimes table but i don't want to query the database for it.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)