SA-MP Forums Archive
The problem with saving data in mysql. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: The problem with saving data in mysql. (/showthread.php?tid=452525)



The problem with saving data in mysql. - MaySee - 21.07.2013

Hello, I have a problem with mysql plugin to BlueG R6, namely... code in the database does not return the full value of the database so that nothing saves and record the passage occurs only char_health table. Any suggestions?

Code with PWN.
Code:
public SavePlayerStats(playerid, what)
{
	if(!Logged[playerid])
	{
	    return 1;
	}
	new query[512], main_query[1024];
	
	format(main_query, sizeof(main_query), "UPDATE `hrp_char` SET");
	if(what & SAVE_PLAYER_BASIC)
	{
   		format(query, sizeof(query), " `char_hours` = %d, `char_minutes` = %d, `char_skin` = %d, `char_health` = '%f', `char_cash` = %d, `char_bankcash` = %d, `char_banknumb` = %d, `char_warns` = %d, `char_bw` = %d, `char_aj` = %d, `char_crash` = %d, `char_block` = %d, `char_hoteluid` = %d, `char_pdp` = %d, `char_documents` = %d, `char_lastpay` = %d, `char_job` = %d, `char_arrest` = %d, `char_arresttime` = %d, `char_spawnplace` = %d, `char_house` = %d, `char_fightstyle` = %d",
		PlayerCache[playerid][pHours],
		PlayerCache[playerid][pMinutes],
			
		PlayerCache[playerid][pSkin],
		PlayerCache[playerid][pHealth],

		PlayerCache[playerid][pCash],
		PlayerCache[playerid][pBankCash],
		PlayerCache[playerid][pBankNumber],
			
		PlayerCache[playerid][pWarns],
			
		PlayerCache[playerid][pBW],
		PlayerCache[playerid][pAJ],
			
		PlayerCache[playerid][pCrash],
			
		PlayerCache[playerid][pBlock],
		PlayerCache[playerid][pHotel],
			
		PlayerCache[playerid][pPDP],
			
		PlayerCache[playerid][pDocuments],
			
		PlayerCache[playerid][pLastPay],
		PlayerCache[playerid][pJob],

		PlayerCache[playerid][pArrest],
		PlayerCache[playerid][pArrestTime],
			
		PlayerCache[playerid][pSpawnPlace],
		PlayerCache[playerid][pHouse],

		PlayerCache[playerid][pFightingStyle]);

		if(strlen(main_query) > 32)
		{
  			strcat(main_query, ",", sizeof(main_query));
		}
		strcat(main_query, query, sizeof(main_query));
	}
	if(what & SAVE_PLAYER_POS)
	{
     	format(main_query, sizeof(main_query), "UPDATE `hrp_char` SET");
   		format(query, sizeof(query), " `char_int` = %d, `char_vw` = %d, `char_posx` = %f, `char_posy` = %f, `char_posz` = %f",
		PlayerCache[playerid][pInt],
		PlayerCache[playerid][pVW],
		PlayerCache[playerid][pPosX],
  		PlayerCache[playerid][pPosY],
  		PlayerCache[playerid][pPosZ]);

		if(strlen(main_query) > 32)
		{
  			strcat(main_query, ",", sizeof(main_query));
		}
		strcat(main_query, query, sizeof(main_query));
	}
	if(what & SAVE_PLAYER_BIZ)
	{
        format(main_query, sizeof(main_query), "UPDATE `hrp_char` SET");
	    mysql_real_escape_string(PlayerCache[playerid][pBizTitle], PlayerCache[playerid][pBizTitle]);
   		format(query, sizeof(query), " `char_bizuid` = %d, `char_bizperm` = %d, `char_biztitle` = %s, `char_bizpayment` = %d, `char_bizskin` = %d",
	    PlayerCache[playerid][pBizUID],
	    PlayerCache[playerid][pBizPerm],
	    PlayerCache[playerid][pBizTitle],
		PlayerCache[playerid][pBizPayment],
		PlayerCache[playerid][pBizSkin]);

		if(strlen(main_query) > 32)
		{
  			strcat(main_query, ",", sizeof(main_query));
		}
		strcat(main_query, query, sizeof(main_query));
	}
	if(what & SAVE_PLAYER_ORG)
	{
        format(main_query, sizeof(main_query), "UPDATE `hrp_char` SET");
	    mysql_real_escape_string(PlayerCache[playerid][pOrgTitle], PlayerCache[playerid][pOrgTitle]);
   		format(query, sizeof(query), " `char_orguid` = %d, `char_orgperm` = %d, `char_orgtitle` = %s, `char_orgpayment` = %d, `char_orgskin` = %d",
	    PlayerCache[playerid][pOrgUID],
	    PlayerCache[playerid][pOrgPerm],
	    PlayerCache[playerid][pOrgTitle],
		PlayerCache[playerid][pOrgPayment],
		PlayerCache[playerid][pOrgSkin]);

		if(strlen(main_query) > 32)
		{
  			strcat(main_query, ",", sizeof(main_query));
		}
	  	strcat(main_query, query, sizeof(main_query));
	}
	if(what & SAVE_PLAYER_FACTION)
	{
     	format(main_query, sizeof(main_query), "UPDATE `hrp_char` SET");
	    mysql_real_escape_string(PlayerCache[playerid][pFacTitle], PlayerCache[playerid][pFacTitle]);
   		format(query, sizeof(query), " `char_facuid` = %d, `char_facperm`= %d, `char_factitle` = %s, `char_facpayment` = %d, `char_facskin` = %d",
	    PlayerCache[playerid][pFacUID],
   		PlayerCache[playerid][pFacPerm],
   		PlayerCache[playerid][pFacTitle],
		PlayerCache[playerid][pFacPayment],
		PlayerCache[playerid][pFacSkin]);

		if(strlen(main_query) > 32)
		{
  			strcat(main_query, ",", sizeof(main_query));
		}
		strcat(main_query, query, sizeof(main_query));
	}
	if(what & SAVE_PLAYER_SKILLS)
	{
        format(main_query, sizeof(main_query), "UPDATE `hrp_char` SET");
   		format(query, sizeof(query), " `char_driving` = %f, `char_swimming` = %f, `char_shooting` = %f, `char_fishing` = %f, `char_strength` = %f, `char_dependence` = %f",
	    PlayerCache[playerid][pDriving],
	    PlayerCache[playerid][pSwimming],
	    PlayerCache[playerid][pShooting],
		PlayerCache[playerid][pFishing],
		PlayerCache[playerid][pStrength],
		PlayerCache[playerid][pDependence]);
		    
		if(strlen(main_query) > 32)
		{
  			strcat(main_query, ",", sizeof(main_query));
		}
		strcat(main_query, query, sizeof(main_query));
	}
	format(query, sizeof(query), " WHERE char_uid = '%d' LIMIT 1", PlayerCache[playerid][pUID]);
	strcat(main_query, query, sizeof(main_query));

	mysql_query(main_query);
	return 1;
}



Re: The problem with saving data in mysql. - MaySee - 22.07.2013

whoever?


Re: The problem with saving data in mysql. - Misiur - 22.07.2013

Most recent release of mysql plugin is R31. Furthermore R6 doesn't support caching, so it can and will create security vunerabilities (DOS and similar) on your server. Additionaly, read about foreign table keys, because your table structure (fields with fac prefix) should be changed.

Show your mysql_log, or add debug:
pawn Code:
//before
mysql_query(main_query);
//add
printf("Database query: %s", main_query);



Re: The problem with saving data in mysql. - MaySee - 22.07.2013

I created a business, but when the server is turned off completely disappeared from the database. In addition, do not update the entire table of figures, only that part of the passage.

server_log
Code:
[13:09:29] Database query: UPDATE `hrp_char` SET `char_bizuid` = 13, `char_bizperm` = 63, `char_biztitle` = 0, `char_bizpayment` = 0, `char_bizskin` = 0 WHERE char_uid = '2' LIMIT 1
[13:09:42] *** Audio Plugin: Paulie_Curezzo (ID: 0) has disconnected
[13:09:42] Database query: UPDATE `hrp_char` SET `char_int` = 0, `char_vw` = 0, `char_posx` = 823.523376, `char_posy` = -1360.266235, `char_posz` = -0.507812 WHERE char_uid = '2' LIMIT 1
[13:09:42] Database query: UPDATE `hrp_char` SET `char_driving` = 0.000000, `char_swimming` = 0.000000, `char_shooting` = 0.000000, `char_fishing` = 0.000000, `char_strength` = 15.000000, `char_dependence` = 0.000000 WHERE char_uid = '2' LIMIT 1
[13:09:43] [part] Paulie_Curezzo has left the server (0:1)
mysql_log
Code:
[13:09:21] CMySQLHandler::Query(UPDATE `hrp_business` SET business_name = 'test', business_cash = '0', business_type = '7', business_value1 = '0', business_value2 = '0', business_lasttax = '0', business_dotation = '0', business_points = '0' WHERE business_uid = '13' LIMIT 1) - Successfully executed.

[13:09:29] >> mysql_real_escape_string( Connection handle: 1 )

[13:09:29] CMySQLHandler::EscapeString(0); - Escaped 1 characters to 0.

[13:09:29] >> mysql_query( Connection handle: 1 )

[13:09:29] CMySQLHandler::Query(UPDATE `hrp_char` SET `char_bizuid` = 13, `char_bizperm` = 63, `char_biztitle` = 0, `char_bizpayment` = 0, `char_bizskin` = 0 WHERE char_uid = '2' LIMIT 1) - Successfully executed.

[13:09:42] >> mysql_query( Connection handle: 1 )

[13:09:42] CMySQLHandler::Query(UPDATE `hrp_char` SET `char_int` = 0, `char_vw` = 0, `char_posx` = 823.523376, `char_posy` = -1360.266235, `char_posz` = -0.507812 WHERE char_uid = '2' LIMIT 1) - Successfully executed.

[13:09:42] >> mysql_query( Connection handle: 1 )

[13:09:42] CMySQLHandler::Query(UPDATE `hrp_char` SET char_online = '0' WHERE char_uid = '2' LIMIT 1) - Successfully executed.

[13:09:42] >> mysql_real_escape_string( Connection handle: 1 )

[13:09:42] CMySQLHandler::EscapeString(0); - Escaped 1 characters to 0.

[13:09:42] >> mysql_real_escape_string( Connection handle: 1 )

[13:09:42] CMySQLHandler::EscapeString(); - Escaped 0 characters to .

[13:09:42] >> mysql_real_escape_string( Connection handle: 1 )

[13:09:42] CMySQLHandler::EscapeString(); - Escaped 0 characters to .

[13:09:42] >> mysql_query( Connection handle: 1 )

[13:09:43] CMySQLHandler::Query(UPDATE `hrp_char` SET `char_driving` = 0.000000, `char_swimming` = 0.000000, `char_shooting` = 0.000000, `char_fishing` = 0.000000, `char_strength` = 15.000000, `char_dependence` = 0.000000 WHERE char_uid = '2' LIMIT 1) - Successfully executed.
PS. The script runs in Windows.