Помогите с MySQL R7
#1

Пожалуйста помогите, отправляю запрос:
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.
Подскажите, что не так.
Строка аккаунта в таблице присутствует, но авторизация не появляется.
А если строки нет, то нет регистрации.
Reply
#2

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()) {...
Reply
#3

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

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;
}
Reply
#5

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);
Reply
#6

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


Forum Jump:


Users browsing this thread: 1 Guest(s)