Veteran Member
Join Date: Mar 2008
Location: Lithuania
|
01-17-2010
, 13:03
[SOLVED]You have an error in your SQL syntax
|
#1
|
What this can mean, I don't really understand?
Quote:
L 01/17/2010 - 20:02:05: [diablo2LOD.amxx] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0 0#0 0 0 0 0 0 0 0 0 0#0 0 0 0 0 0 0 0 0 0#0 0 0 0 0 0 0 0 0 0#0 0 0 0 0 0 0 0' at line 1
|
PHP Code:
public MYSQLX_Save_T( id )
{
// Make sure our connection is working
if ( !g_DBConn )
{
return;
}
// Error checking when saving
if ( g_PlayerKey[id] <= 0 )
{
// Try again to fetch the uniqueID
MYSQLX_FetchUniqueID( id );
// Okay, we can't really get the uniqueID
if ( g_PlayerKey[id] <= 0 )
{
new szName[128];
get_user_name( id, szName, 127 );
log_amx( "Unable to save XP for user '%s', unique ID: %d", szName, g_PlayerKey[id] );
return;
}
}
// Save the user's XP!
new iLen = 0;
new szQuery[512], szData[512];
iLen += formatex( szData[ iLen ], charsmax(szData) - iLen, "%d %d#", g_PlayerHero[id], g_CurrentMana[id] );
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
iLen += formatex ( szData[ iLen ], charsmax(szData) - iLen, "%d %d %d %d %d %d %d %d %d %d#", g_PlayerLevel[id][iClass], g_PlayerXp[id][iClass], g_PlayerSkPoints[id][iClass], g_PlayerStPoints[id][iClass], g_Strength[id][iClass], g_Dexterity[id][iClass], g_Vitality[id][iClass], g_Energy[id][iClass], g_Coins[id][iClass], g_CoinsInv[id][iClass] )
}
for( new iSkill = 0; iSkill < CLASS_MAX_SKILLS; iSkill++ )
{
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
iLen += formatex( szData[ iLen ], charsmax(szData) - iLen, "%d#", g_iSkills[ id ][ iClass ][ iSkill ] );
}
}
for( new iItems = 0; iItems <= g_charcounter ; iItems++ )
{
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
iLen += formatex( szData[ iLen ], charsmax(szData) - iLen, "%d %d %d %d %d#", g_iPlayerItem[id][iClass][iItems], g_iPlayerItemInv[id][iClass][iItems], g_iPlayerItemBolts[id][iClass][iItems], g_iPlayerItemWorn[id][iClass][iItems], g_iPlayerItemRepair[id][iClass][iItems] )
}
}
for( new iPotions = 0; iPotions < MAX_POTIONS ; iPotions++ )
{
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
iLen += formatex( szData[ iLen ], charsmax(szData) - iLen, "%d %d#", g_iPlayerPotions[id][iClass][iPotions], g_iPlayerPotionsInv[id][iClass][iPotions] )
}
}
formatex( szQuery, charsmax(szQuery), "REPLACE INTO `d2_data` (`player_id`, `player_data`) VALUES ('%s', '%s');", g_PlayerKey[id], szData );
SQL_ThreadQuery( g_DBTuple, "_MYSQLX_Save_T", szQuery );
return;
}
public _MYSQLX_Save_T( failstate, Handle:query, error[], errnum, data[], size )
{
if( failstate == TQUERY_CONNECT_FAILED
|| failstate == TQUERY_QUERY_FAILED )
{
log_amx( "%s", error );
return;
}
}
public MYSQLX_GetAllData( id )
{
// Make sure our connection is working
if ( !g_DBConn )
{
return;
}
// Error checking when loading
if ( g_PlayerKey[id] <= 0 )
{
// Try again to fetch the uniqueID
MYSQLX_FetchUniqueID( id );
// Okay, we can't really get the uniqueID
if ( g_PlayerKey[id] <= 0 )
{
new szName[128];
get_user_name( id, szName, 127 );
log_amx( "Unable to retrieve XP for user '%s', unique ID: %d", szName, g_PlayerKey[id] );
return;
}
}
new szQuery[ 512 ], iData[ 1 ];
formatex( szQuery, charsmax( szQuery ), "SELECT `player_data` FROM `d2_data` WHERE ( `player_id` = '%d' );", g_PlayerKey[id] );
iData[ 0 ] = id;
SQL_ThreadQuery( g_DBTuple, "_MYSQLX_GetAllData", szQuery, iData, 1 );
return;
}
public _MYSQLX_GetAllData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
else
{
new id = iData[ 0 ];
new szData[512], szAllItems[512], szClassLevel[256], szSkills[256], szItems[256], szPotions[256];
new szHero[3], szLevel[4], szXp[10], szSk[4], szSt[5], szCurMana[6], szStr[5], szDex[5], szVit[5], szEne[5], szCoin[10], szCoinInv[11],
szPItem[3], szPItemInv[3], szPItemW[3], szPItemRep[5], szItemB[5], szItem[64], szPotion[3], szPotionInv[4];
new ColData = SQL_FieldNameToNum(hQuery, "player_data")
while (SQL_MoreResults(hQuery))
{
SQL_ReadResult(hQuery, ColData, szData, charsmax( szData ) );
strtok(szData, szData, sizeof( szData ) - 1, szAllItems, sizeof( szAllItems ) - 1, '#')
parse(szData, szHero, charsmax(szHero), szCurMana, charsmax(szCurMana));
g_PlayerHero[id] = str_to_num( szHero )
g_CurrentMana[id] = str_to_num( szCurMana )
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
strtok(szAllItems, szClassLevel, sizeof( szClassLevel ) - 1, szAllItems, sizeof( szAllItems ) - 1, '#')
strtok(szClassLevel, szLevel, sizeof( szLevel ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szXp, sizeof( szXp ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szSk, sizeof( szSk ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szSt, sizeof( szSt ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szStr, sizeof( szStr ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szDex, sizeof( szDex ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szVit, sizeof( szVit ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szEne, sizeof( szEne ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, ' ')
strtok(szClassLevel, szCoin, sizeof( szCoin ) - 1, szCoinInv, sizeof( szCoinInv ) - 1, ' ')
g_PlayerLevel[id][iClass] = str_to_num( szLevel )
g_PlayerXp[id][iClass] = str_to_num( szXp )
g_PlayerSkPoints[id][iClass] = str_to_num( szSk )
g_PlayerStPoints[id][iClass] = str_to_num( szSt )
g_Strength[id][iClass] = str_to_num( szStr )
g_Dexterity[id][iClass] = str_to_num( szDex )
g_Vitality[id][iClass] = str_to_num( szVit )
g_Energy[id][iClass] = str_to_num( szEne )
g_Coins[id][iClass] = str_to_num( szCoin )
g_CoinsInv[id][iClass] = str_to_num( szCoinInv )
}
for( new iSkill = 0; iSkill < CLASS_MAX_SKILLS; iSkill++ )
{
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
strtok(szAllItems, szClassLevel, sizeof( szClassLevel ) - 1, szAllItems, sizeof( szAllItems ) - 1, '#')
strtok(szClassLevel, szSkills, sizeof( szSkills ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, '#')
g_iSkills[id][iClass][iSkill] = str_to_num( szSkills );
}
}
for( new iItems = 0; iItems <= g_charcounter ; iItems++ )
{
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
strtok(szAllItems, szClassLevel, sizeof( szClassLevel ) - 1, szAllItems, sizeof( szAllItems ) - 1, '#')
strtok(szClassLevel, szSkills, sizeof( szSkills ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, '#')
strtok(szSkills, szItems, sizeof( szItems ) - 1, szSkills, sizeof( szSkills ) - 1, '#')
strtok(szItems, szPItem, sizeof( szPItem ) - 1, szItem, sizeof( szItems ) - 1, ' ')
strtok(szItems, szPItemInv, sizeof( szPItemInv ) - 1, szItem, sizeof( szItems ) - 1, ' ')
strtok(szItems, szItemB, sizeof( szItemB ) - 1, szItem, sizeof( szItems ) - 1, ' ')
strtok(szItems, szPItemW, sizeof( szPItemW ) - 1, szPItemRep, sizeof( szPItemRep ) - 1, ' ')
g_iPlayerItem[id][iClass][iItems] = str_to_num( szPItem );
g_iPlayerItemInv[id][iClass][iItems] = str_to_num( szPItemInv );
g_iPlayerItemBolts[id][iClass][iItems] = str_to_num( szItemB );
g_iPlayerItemWorn[id][iClass][iItems] = str_to_num( szPItemW );
g_iPlayerItemRepair[id][iClass][iItems] = str_to_num( szPItemRep );
}
}
for( new iPotions = 0; iPotions < MAX_POTIONS ; iPotions++ )
{
for( new iClass = 0; iClass < MAX_HEROES; iClass++ )
{
strtok(szAllItems, szClassLevel, sizeof( szClassLevel ) - 1, szAllItems, sizeof( szAllItems ) - 1, '#')
strtok(szClassLevel, szSkills, sizeof( szSkills ) - 1, szClassLevel, sizeof( szClassLevel ) - 1, '#')
strtok(szSkills, szItems, sizeof( szItems ) - 1, szSkills, sizeof( szSkills ) - 1, '#')
strtok(szItems, szPotions, sizeof( szPotions ) - 1, szItems, sizeof( szItems ) - 1, '#')
strtok(szPotions, szPotion, sizeof( szPotion ) - 1, szPotionInv, sizeof( szPotionInv ) - 1, ' ')
g_iPlayerPotions[id][iClass][iPotions] = str_to_num( szPotion )
g_iPlayerPotionsInv[id][iClass][iPotions] = str_to_num( szPotionInv )
}
}
SQL_NextRow(hQuery)
}
}
}
PHP Code:
new const szTables[][] =
{
"CREATE TABLE IF NOT EXISTS `d2_data` ( `player_id` int(8) unsigned NOT NULL auto_increment, `player_steamid` varchar(25) NOT NULL default '', `player_ip` varchar(20) NOT NULL default '', `player_name` varchar(35) NOT NULL default '', `player_data` varchar(512) NOT NULL default '', PRIMARY KEY (`player_id`), KEY `player_name` (`player_name`), KEY `player_ip` (`player_ip`), KEY `player_steamid` (`player_steamid`) ) TYPE=MyISAM;"
}
P.S. Borrowed some code from DA.
__________________
Last edited by xbatista; 01-18-2010 at 13:31.
|
|