Проблема с сохранением статистики (Mysql)
#1

PHP код:
stock SavePlayer(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,name,sizeof(name));
    if(!
gPlayerLogged[playerid]) return 1;
    
format(querysizeofquery ),"UPDATE `accounts` SET `Admin`='%d', `Tutorial`='%d',\
    `Age`='%d', `Sex`='%d', `Origin`='%d', `Model`='%d', `SpanwX`='%f', `SpawnY`='%f',\
    `SpawnZ`='%f', `Carkey`='%d', `Cash`='%d', `Bank`='%d', `Leader`='%d', `Member`='%d',\
    `Rank`='%d', `Warns`='%d', `InvWeapon`='%d', `InvWeapon2`='%d', `InvWeapon3`='%d',\
     `InvAmmo`='%d', `InvAmmo2`='%d', `InvAmmo3`='%d' WHERE `Name`='%s' LIMIT 1"
,
     
Player[playerid][pAdmin], Player[playerid][pTutorial], Player[playerid][pAge],
      
Player[playerid][pSex], Player[playerid][pOrigin], Player[playerid][pModel], Player[playerid][pCordX],
       
Player[playerid][pCordY], Player[playerid][pCordZ], Player[playerid][pCarkey], Player[playerid][pCash],
       
Player[playerid][pBank], Player[playerid][pLeader], Player[playerid][pMember], Player[playerid][pRank],
       
Player[playerid][pWarns], Player[playerid][pInvWeapon], Player[playerid][pInvWeapon2], Player[playerid][pInvWeapon3],
       
Player[playerid][pInvAmmo], Player[playerid][pInvAmmo2], Player[playerid][pInvAmmo3], Player[playerid][pInvAmmo3],name);
    
mysql_query(query), mysql_free_result();
    return 
1;

Помогите разобраться, уже что только не делал((
Reply
#2

Во первых mysql_free_result(); - выкинуть, здесь это не нужно.
Во вторых query - где создается? Нигде судя по всему.
В третьих, что пишет в дебаге?
Reply
#3

mysql_free_result(); Выкинул
query в начале мода
Reply
#4

каждую переменную дописывай в strcat
Reply
#5

Quote:
Originally Posted by Alexander_Petrov
Посмотреть сообщение
каждую переменную дописывай в strcat
Уйдите, с такими советами. Ужас.
Reply
#6

2 день уже мучаюсь
Reply
#7

Какой размер у query?
Reply
#8

2048
Reply
#9

А что нам говорит дебаг?
Reply
#10

Quote:
Originally Posted by Stepan23
Посмотреть сообщение
mysql_free_result(); Выкинул
query в начале мода
Покажите содержимое лога, и какой размер query.
Reply
#11

PHP код:
[12:50:06]  
[
12:50:06] ---------------------------
[
12:50:06MySQL Debugging activated (05/21/12)
[
12:50:06] ---------------------------
[
12:50:06]  
[
12:50:30] >> mysql_queryConnection handle)
[
12:50:30CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzf') - Successfully executed.
[
12:50:30] >> mysql_store_resultConnection handle)
[
12:50:30CMySQLHandler::StoreResult() - Result was stored.
[
12:50:30] >> mysql_fetch_row_formatConnection handle)
[
12:50:32] >> mysql_queryConnection handle)
[
12:50:32CMySQLHandler::Query(INSERT INTO `accounts` (NamePasswordVALUES ('Aleksandr_Sbnzf',  '23')) - Successfully executed.
[
12:50:34] >> mysql_queryConnection handle)
[
12:50:34CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzf' AND `Password` = '23') - Successfully executed.
[
12:50:34] >> mysql_store_resultConnection handle)
[
12:50:34CMySQLHandler::StoreResult() - Result was stored.
[
12:50:34] >> mysql_fetch_row_formatConnection handle)
[
12:50:34CMySQLHandler::FetchRow() - Return: 5|Aleksandr_Sbnzf|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[12:50:34] >> mysql_queryConnection handle)
[
12:50:34CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzf') - Successfully executed.
[
12:50:34] >> mysql_store_resultConnection handle)
[
12:50:34CMySQLHandler::StoreResult() - Result was stored.
[
12:50:34] >> mysql_fetch_row_formatConnection handle)
[
12:50:34CMySQLHandler::FetchRow() - Return: 5|Aleksandr_Sbnzf|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[12:53:07] >> mysql_queryConnection handle)
[
12:53:07CMySQLHandler::Query(UPDATE `accountsSET `Status` = 0 WHERE `Name`='Aleksandr_Sbnzf') - An error has occured. (Error ID1054Unknown column 'Status' in 'field list')
[
12:53:07] >> mysql_queryConnection handle)
[
12:53:07CMySQLHandler::Query(UPDATE `accountsSET `Admin`='5', `Tutorial`='1',`Age`='47', `Sex`='1', `Origin`='1', `Model`='101', `SpanwX`='-144.803985', `SpawnY`='1211.294677',`SpawnZ`='19.735198', `Carkey`='0', `Cash`='3000000', `Bank`='0', `Leader`='0', `Member`='0',`Rank`='0', `Warns`='0', `InvWeapon`='0', `InvWeapon2`='0', `InvWeapon3`='0',`InvAmmo`='0', `InvAmmo2`='0', `InvAmmo3`='0' WHERE `Name`='' LIMIT 1) - An error has occured. (Error ID1054Unknown column 'SpanwX' in 'field list'
Reply
#12

Так-то он тебе пишет в чем проблема, может стоит читать логи:
Код:
Unknown column 'SpanwX' in 'field list'
И у тебя условие пустое:
Код:
WHERE `Name`='' LIMIT 1
Reply
#13

SpanwX - опечатка.
Reply
#14

Ничего не изменилось....
Reply
#15

Quote:
Originally Posted by Stepan23
Посмотреть сообщение
Ничего не изменилось....
Что изменили, и лог.
Reply
#16

Лог:
PHP код:
[13:23:40MySQL Debugging activated (05/21/12)
[
13:23:40] ---------------------------
[
13:23:40]  
[
13:23:55] >> mysql_queryConnection handle)
[
13:23:55CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller') - Successfully executed.
[
13:23:55] >> mysql_store_resultConnection handle)
[
13:23:55CMySQLHandler::StoreResult() - Result was stored.
[
13:23:55] >> mysql_fetch_row_formatConnection handle)
[
13:23:57] >> mysql_queryConnection handle)
[
13:23:57CMySQLHandler::Query(INSERT INTO `accounts` (NamePasswordVALUES ('Aleksandr_Sbnzller',  '23')) - Successfully executed.
[
13:23:58] >> mysql_queryConnection handle)
[
13:23:58CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller' AND `Password` = '23') - Successfully executed.
[
13:23:58] >> mysql_store_resultConnection handle)
[
13:23:58CMySQLHandler::StoreResult() - Result was stored.
[
13:23:58] >> mysql_fetch_row_formatConnection handle)
[
13:23:58CMySQLHandler::FetchRow() - Return: 8|Aleksandr_Sbnzller|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[13:23:58] >> mysql_queryConnection handle)
[
13:23:58CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller') - Successfully executed.
[
13:23:58] >> mysql_store_resultConnection handle)
[
13:23:58CMySQLHandler::StoreResult() - Result was stored.
[
13:23:58] >> mysql_fetch_row_formatConnection handle)
[
13:23:58CMySQLHandler::FetchRow() - Return: 8|Aleksandr_Sbnzller|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[13:23:58] >> mysql_queryConnection handle)
[
13:23:58CMySQLHandler::Query(UPDATE `accountsSET `Status` = 1 WHERE `Name`='8') - Successfully executed.
[
13:26:18] >> mysql_queryConnection handle)
[
13:26:18CMySQLHandler::Query(UPDATE `accountsSET `Admin`='23', `Tutorial`='1',`Age`='47', `Sex`='1', `Origin`='1', `Model`='101', `SpawnX`='1717.698364', `SpawnY`='1422.362182',`SpawnZ`='10.640625', `Carkey`='0', `Cash`='0', `Bank`='0', `Leader`='0', `Member`='0',`Rank`='0', `Warns`='0', `InvWeapon`='0', `InvWeapon2`='0', `InvWeapon3`='0',`InvAmmo`='0', `InvAmmo2`='0', `InvAmmo3`='0' WHERE `Name`='' LIMIT 1) - Successfully executed.
[
13:26:44] >> mysql_queryConnection handle)
[
13:26:44CMySQLHandler::Query(UPDATE `accountsSET `Status` = 0 WHERE `Name`='Aleksandr_Sbnzller') - Successfully executed.
[
13:26:44] >> mysql_queryConnection handle)
[
13:26:44CMySQLHandler::Query(UPDATE `accountsSET `Admin`='5', `Tutorial`='1',`Age`='47', `Sex`='1', `Origin`='1', `Model`='101', `SpawnX`='-143.990173', `SpawnY`='1213.620483',`SpawnZ`='19.735198', `Carkey`='0', `Cash`='3000000', `Bank`='0', `Leader`='0', `Member`='0',`Rank`='0', `Warns`='0', `InvWeapon`='30', `InvWeapon2`='0', `InvWeapon3`='0',`InvAmmo`='100', `InvAmmo2`='0', `InvAmmo3`='0' WHERE `Name`='' LIMIT 1) - Successfully executed
Изменение: SpawnX
Добавил Статус при Логине
Reply
#17

Ой вот новый лог, была проблема с Name....

PHP код:
13:33:46] ---------------------------
[
13:33:46MySQL Debugging activated (05/21/12)
[
13:33:46] ---------------------------
[
13:33:46]  
[
13:33:58] >> mysql_queryConnection handle)
[
13:33:58CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller') - Successfully executed.
[
13:33:58] >> mysql_store_resultConnection handle)
[
13:33:58CMySQLHandler::StoreResult() - Result was stored.
[
13:33:58] >> mysql_fetch_row_formatConnection handle)
[
13:33:58CMySQLHandler::FetchRow() - Return: 8|Aleksandr_Sbnzller|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[13:34:05] >> mysql_queryConnection handle)
[
13:34:05CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller' AND `Password` = '23') - Successfully executed.
[
13:34:05] >> mysql_store_resultConnection handle)
[
13:34:05CMySQLHandler::StoreResult() - Result was stored.
[
13:34:05] >> mysql_fetch_row_formatConnection handle)
[
13:34:05CMySQLHandler::FetchRow() - Return: 8|Aleksandr_Sbnzller|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[13:34:05] >> mysql_queryConnection handle)
[
13:34:05CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller') - Successfully executed.
[
13:34:05] >> mysql_store_resultConnection handle)
[
13:34:05CMySQLHandler::StoreResult() - Result was stored.
[
13:34:05] >> mysql_fetch_row_formatConnection handle)
[
13:34:05CMySQLHandler::FetchRow() - Return: 8|Aleksandr_Sbnzller|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
[13:34:05] >> mysql_queryConnection handle)
[
13:34:05CMySQLHandler::Query(SELECT FROM `accountsWHERE `Name` = 'Aleksandr_Sbnzller') - Successfully executed.
[
13:36:30] >> mysql_queryConnection handle)
[
13:36:30CMySQLHandler::Query(UPDATE `accountsSET `Admin`='23', `Tutorial`='1',`Age`='47', `Sex`='1', `Origin`='1', `Model`='101', `SpawnX`='1715.795532', `SpawnY`='1425.187500',`SpawnZ`='10.492187', `Carkey`='0', `Cash`='0', `Bank`='0', `Leader`='0', `Member`='0',`Rank`='0', `Warns`='0', `InvWeapon`='0', `InvWeapon2`='0', `InvWeapon3`='0',`InvAmmo`='0', `InvAmmo2`='0', `InvAmmo3`='0' WHERE `Name`='Aleksandr_Sbnzller' LIMIT 1) - An error has occured. (Error ID2014Commands out of syncyou can't run this command now)
[13:36:43] >> mysql_query( Connection handle: 1 )
[13:36:43] CMySQLHandler::Query(UPDATE `accounts` SET `Status` = 0 WHERE `Name`='
Aleksandr_Sbnzller') - An error has occured. (Error ID: 2014, Commands out of sync; you can't run this command now)
[
13:36:43] >> mysql_queryConnection handle)
[
13:36:43CMySQLHandler::Query(UPDATE `accountsSET `Admin`='5', `Tutorial`='1',`Age`='47', `Sex`='1', `Origin`='1', `Model`='101', `SpawnX`='-141.210678', `SpawnY`='1211.808105',`SpawnZ`='19.742187', `Carkey`='0', `Cash`='3000000', `Bank`='0', `Leader`='0', `Member`='0',`Rank`='0', `Warns`='0', `InvWeapon`='0', `InvWeapon2`='0', `InvWeapon3`='0',`InvAmmo`='0', `InvAmmo2`='0', `InvAmmo3`='0' WHERE `Name`='Aleksandr_Sbnzller' LIMIT 1) - An error has occured. (Error ID2014Commands out of syncyou can't run this command now) 
Но снова какие то ошибки.........
Reply
#18

Теперь у вас проблема синхронизации, видимо сервер не успел обработать предыдущий запрос к бд.
Покажите код что ли.
Reply
#19

PHP код:
stock SavePlayer(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,name,sizeof(name));
    if(!
gPlayerLogged[playerid]) return 1;
    
format(querysizeofquery ),"UPDATE `accounts` SET `Admin`='%d', `Tutorial`='%d',\
   `Age`='%d', `Sex`='%d', `Origin`='%d', `Model`='%d', `SpawnX`='%f', `SpawnY`='%f',\
   `SpawnZ`='%f', `Carkey`='%d', `Cash`='%d', `Bank`='%d', `Leader`='%d', `Member`='%d',\
   `Rank`='%d', `Warns`='%d', `InvWeapon`='%d', `InvWeapon2`='%d', `InvWeapon3`='%d',\
   `InvAmmo`='%d', `InvAmmo2`='%d', `InvAmmo3`='%d' WHERE `Name`='%s' LIMIT 1"
,
   
Player[playerid][pAdmin], Player[playerid][pTutorial], Player[playerid][pAge],
   
Player[playerid][pSex], Player[playerid][pOrigin], Player[playerid][pModel], Player[playerid][pCordX],
   
Player[playerid][pCordY], Player[playerid][pCordZ], Player[playerid][pCarkey], Player[playerid][pCash],
   
Player[playerid][pBank], Player[playerid][pLeader], Player[playerid][pMember], Player[playerid][pRank],
   
Player[playerid][pWarns], Player[playerid][pInvWeapon], Player[playerid][pInvWeapon2], Player[playerid]       [pInvWeapon3],
   
Player[playerid][pInvAmmo], Player[playerid][pInvAmmo2], Player[playerid][pInvAmmo3],name);
   
mysql_query(query);
   return 
1;
}
forward OnPlayerLogin(playerid,password[]);
public 
OnPlayerLogin(playerid,password[])
{
    new 
name[MAX_PLAYER_NAME],result[MAX_RESULT], string[256];
    
GetPlayerName(playeridnamesizeof(name));
    
format(query,sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Password` = '%s'"name,password);
    
mysql_query(query);
    
mysql_store_result();
     if(
mysql_fetch_row(result))
     {
        
format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",name);
        
mysql_query(query);
        
mysql_store_result();
        if(!
mysql_fetch_row(result)) return 0;
         
sscanf(result"p<|>s[24]s[32]iiiiiifffiiiiiiiiiiiii"// i - ид (int), s[размер] - string, ник и пароль.
        
namePlayer[playerid][pPass],Player[playerid][pAdmin], Player[playerid][pTutorial], Player[playerid][pAge],
          
Player[playerid][pSex], Player[playerid][pOrigin], Player[playerid][pModel], Player[playerid][pCordX],
           
Player[playerid][pCordY], Player[playerid][pCordZ], Player[playerid][pCarkey], Player[playerid][pCash],
           
Player[playerid][pBank], Player[playerid][pLeader], Player[playerid][pMember], Player[playerid][pRank],
           
Player[playerid][pWarns], Player[playerid][pInvWeapon], Player[playerid][pInvWeapon2], Player[playerid][pInvWeapon3],
           
Player[playerid][pInvAmmo], Player[playerid][pInvAmmo2], Player[playerid][pInvAmmo3], Player[playerid][pInvAmmo3]);
        if(
Player[playerid][pAdmin] > 0)
        {
             
format(string,sizeof(string), "{ffffff}Вы вошли как администратор {03c03c}%d {ffffff}уровня."Player[playerid][pAdmin]);
             
SendClientMessage(playerid,COLOR_GRAD1,string);
        }
        
ResetPlayerMoney(playerid);
        
GivePlayerMoney(playerid,Player[playerid][pCash]);
        
gPlayerLogged[playerid] = true;
        
SendClientMessage(playerid,0xFF00000,"Сервер Free Life, делает Stepan23");
        
mysql_query(query);
        
SpawnPlayer(playerid);// Спавним игрока
    
}
    return 
1;

Что еще надо?
Reply
#20

format(query,sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Password` = '%s'", name,password);
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row(result))
{
format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",name);
mysql_query(query);
mysql_store_result();

зачем два раза?
Reply


Forum Jump:


Users browsing this thread: 7 Guest(s)