Сообщение от
TimXXX
PHP код:
stock MySQLGetPlayerParam(name[], param[])
{
new query[128], value[56], Name[24], Param[50];
mysql_real_escape_string(name, Name);
mysql_real_escape_string(param, Param);
format(query, sizeof(query), "SELECT `%s` FROM `Accounts` WHERE `NickName` = '%s' LIMIT 1", Param, Name);
new Cache:result = mysql_query(connects,query);
value = cache_get_field_content(cache_num_rows(),"NickName",Name,connects,MAX_PLAYER_NAME);
cache_delete(result);
return value;
}
Но мне кажется что как то неправильно
Нельзя в стоке делать запрос и сразу же кэшировать полученный результат. Результат нужно кэшировать в отдельном паблике.
Пример:
PHP код:
// представим что это какой-то сток
GetPlayerName(playerid, pInfo[playerid][pName], MAX_PLAYER_NAME);
new query_string[49+MAX_PLAYER_NAME-4];
format(query_string, sizeof(query_string), "SELECT * FROM `accounts` WHERE `player_name` = '%s'", pInfo[playerid][pName]);
mysql_function_query(mysql_connect_id, query_string, true, "FindPlayerInTable","i", playerid);
PHP код:
forward FindPlayerInTable(playerid);
public FindPlayerInTable(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(!rows)
{
ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "Введите пароль для регистрации нового аккаунта:", "Регистрация", "Выход");
}
else
{
ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "Введите пароль от аккаунта для того, чтоб продолжить игру:", "Вход", "Выход");
cache_get_field_content(0, "password", pInfo[playerid][pPassword], mysql_connect_id, 31);
}
return 1;
}