SA-MP Forums Archive
Помогите с MySQL R7 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Помогите с MySQL R7 (/showthread.php?tid=371314)



Помогите с MySQL R7 - Optimus_Sprite - 23.08.2012

Пожалуйста помогите, отправляю запрос:
pawn Код:
mysql_format(database, string, "SELECT * FROM `Accounts` WHERE Name = '%s'", PlayerName);
mysql_store_result();
Дальше:
pawn Код:
switch(mysql_num_rows()) {
 case 0: // регистрация при отсутствии строки в таблице
 case 1: // авторизация если одна строка есть
}
Но, вот дебаг:
Код:
>> mysql_format( Connection handle: 1 )
>> mysql_store_result( Connection handle: 1 )
CMySQLHandler::StoreResult() - No data to store.
Подскажите, что не так.
Строка аккаунта в таблице присутствует, но авторизация не появляется.
А если строки нет, то нет регистрации.


Re: Помогите с MySQL R7 - TRPG - 23.08.2012

Quote:
Originally Posted by Optimus_Sprite
Посмотреть сообщение
Пожалуйста помогите, отправляю запрос:
pawn Код:
mysql_format(database, string, "SELECT * FROM `Accounts` WHERE Name = '%s'", PlayerName);
mysql_store_result();
Дальше:
pawn Код:
switch(mysql_num_rows()) {
 case 0: // регистрация при отсутствии строки в таблице
 case 1: // авторизация если одна строка есть
}
Но, вот дебаг:
Код:
>> mysql_format( Connection handle: 1 )
>> mysql_store_result( Connection handle: 1 )
CMySQLHandler::StoreResult() - No data to store.
Подскажите, что не так.
Строка аккаунта в таблице присутствует, но авторизация не появляется.
А если строки нет, то нет регистрации.
Вы забываете запрос отправить перед тем как начинаете работать с его результатами. mysql_format это тот же format, после него используйте mysql_function_query(... и только потом, когда запрос пройдет и вызовется указанный в mysql_function_query паблик, используйте switch(mysql_num_rows()) {...


Re: Помогите с MySQL R7 - Optimus_Sprite - 23.08.2012

Quote:
Originally Posted by TRPG
Посмотреть сообщение
Вы забываете запрос отправить перед тем как начинаете работать с его результатами. mysql_format это тот же format, после него используйте mysql_function_query(... и только потом, когда запрос пройдет и вызовется указанный в mysql_function_query паблик, используйте switch(mysql_num_rows()) {...
Не мог бы подсказать как этой функцией пользоваться?


Re: Помогите с MySQL R7 - TRPG - 23.08.2012

Quote:
Originally Posted by Optimus_Sprite
Посмотреть сообщение
Не мог бы подсказать как этой функцией пользоваться?
pawn Код:
При коннекте:

mysql_format(database,string,"SELECT * FROM `Accounts` WHERE Name = '%s'",PlayerName);
mysql_function_query(database,string,false,"ExistionCallback","ds",playerid,PlayerName);//Отправляем запрос

Далее

forward ExistionCallback(playerid,name[]);
public ExistionCallback(playerid,name[])//Паблик вызывается после обработки запроса.
{
    mysql_store_result();
    if(!IsPlayerConnected(playerid))//Защита от случаев когда результат приходит, а игрок уже покинул сервер.
    {
        mysql_free_result();
        return 1;
    }
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,PlayerName,sizeof PlayerName);
    if(strcmp(name,PlayerName,true))//Защита от случаев когда результат приходит, а игрок уже покинул сервер и на его место зашел другой
    {
        mysql_free_result();
        return 1;
    }
    Далее ваш код с mysql_num_rows...
    switch(mysql_num_rows())
    {
        case 0: // регистрация при отсутствии строки в таблице
        case 1: // авторизация если одна строка есть
    }
    mysql_free_result();//Не забывайте использовать
    return 1;
}



Re: Помогите с MySQL R7 - Optimus_Sprite - 23.08.2012

Quote:
Originally Posted by TRPG
Посмотреть сообщение
pawn Код:
При коннекте:

mysql_format(database,string,"SELECT * FROM `Accounts` WHERE Name = '%s'",PlayerName);
mysql_function_query(database,string,false,"ExistionCallback","ds",playerid,PlayerName);//Отправляем запрос

Далее

forward ExistionCallback(playerid,name[]);
public ExistionCallback(playerid,name[])//Паблик вызывается после обработки запроса.
{
    mysql_store_result();
    if(!IsPlayerConnected(playerid))//Защита от случаев когда результат приходит, а игрок уже покинул сервер.
    {
        mysql_free_result();
        return 1;
    }
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,PlayerName,sizeof PlayerName);
    if(strcmp(name,PlayerName,true))//Защита от случаев когда результат приходит, а игрок уже покинул сервер и на его место зашел другой
    {
        mysql_free_result();
        return 1;
    }
    Далее ваш код с mysql_num_rows...
    switch(mysql_num_rows())
    {
        case 0: // регистрация при отсутствии строки в таблице
        case 1: // авторизация если одна строка есть
    }
    mysql_free_result();//Не забывайте использовать
    return 1;
}
Ещё одна проблема:
Не создается строка (аккаунт).
pawn Код:
mysql_format(database, "", "INSERT INTO `Accounts` ( `Name`,`Password`,`Admin`,`Money`,`Kills`,`Warns` ) VALUES ( '%s', '%s', 0, 0, 0, 0 )", PlayerName, inputtext);



Re: Помогите с MySQL R7 - Optimus_Sprite - 23.08.2012

Все проблемы решены.
Спасибо