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=543705)



Помогите с MySQL r7 - Daea - 28.10.2014

Добрый день! Сделал мод на MySQL на основе другого. Все нормально работает, только вот..

Вот часть кода из того мода:
Код:
cache_get_data(rows, fields);
			format(mysql_query, sizeof(mysql_query), "SELECT * FROM `Accounts` WHERE `Name` = '%s'", akk);
			mysql_function_query(connects, mysql_query, true, "", "");
			if(!rows) return SendMes(playerid, COLOR_GREY, "[ MySql ] Аккаунт %s не найден в базе данных.",akk);
			cache_get_field_content(0, "pLocked2", banned2);
mysql_function_query(connects, mysql_query, true, "", ""); - не вызывает никаких пабликов, т.е. узнает есть ли строка с таким именем...

А вот мой код:
Код:
for(new id = 0; id < AllNames; id++)
			{
				if(strlen(Names[id]) > 5)
				{
                    new rows, fields,tmpz[4],activate,sn[MAX_PLAYER_NAME];
					mysql_real_escape_string(Names[id], sn);
					cache_get_data(rows, fields);
					format(stringx, sizeof(stringx), "SELECT * FROM `accountz` WHERE `Name` = '%s'",sn);
					mysql_function_query(connects, stringx, true, "", "");
					if(!rows) continue;
					else
					{
					    cache_get_field_content(0, "Activate", tmpz);
		    			activate = strval(tmpz);
					    if(activate != 5) continue;
						format(stringx, 80, "{33CCFF}Игрок №%d:\t{ffffff}%s\n",indicator+1,Names[id]);
						strcat(stringsg, stringx);
						ShowPlayerPlayers[playerid][indicator] = id;
						indicator++;
						playerrega = true;
					}
				}
			}
Пишет, что нет аккаунта...
Т.е. не узнает `activate `!
Как я это понял? - В сохранении сделал такой вот запрос:
Код:
new str[4096],tmp[4];
		format(str, 80, "SELECT * FROM `accountz` WHERE `ID` = '%d'",PlayerInfo[playerid][pID]);
		mysql_function_query(connects, str, true, "", "");
        cache_get_field_content(0, "Activate", tmp);
		new activate = strval(tmp);

		mysql_format(connects,str,sizeof(str),"UPDATE `accountz` SET `pPhousekey` = '%d',`pGaragekey` = '%d',`pSpawn` = '%d',`pBootle` = '%d',`pPayTime` = '%d',`pPassportnum` = '%d',`pSitosti` = '%f',`pJajda` = '%d',`pLevel` = '%d',`pGigiena` = '%d', ",
		PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pGaragekey],PlayerInfo[playerid][pSpawn],PlayerInfo[playerid][pBootle],PlayerInfo[playerid][pPayTime],
		PlayerInfo[playerid][pPassportnum],PlayerInfo[playerid][pSitosti],PlayerInfo[playerid][pJajda],PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pGigiena]);
В итоге сохраняется число 0, т.е. activate не узнает, а значит что-то не так работает с
Код:
cache_get_data(rows, fields);
					format(stringx, sizeof(stringx), "SELECT * FROM `accountz` WHERE `Name` = '%s'",sn);
Сохраняет аккаунт НОРМАЛЬНО!
Просто объясните, как можно сделать запрос, при этом узнать сколько строк выделено с данным условием
Код:
mysql_real_escape_string(Names[id], sn);
					cache_get_data(rows, fields);
					format(stringx, sizeof(stringx), "SELECT * FROM `accountz` WHERE `Name` = '%s'",sn);
					mysql_function_query(connects, stringx, true, "", "");



Re: Помогите с MySQL r7 - Daea - 28.10.2014

Вы вообще поняли, что нужно то?
Тогда еще кратче...
Можно ли посылать запрос и узнать количество строк кеша, без вызова паблика?...
Код:
cache_get_data(rows, fields);
					format(stringx, sizeof(stringx), "SELECT * FROM `accountz` WHERE `Name` = '%s'",sn);
					mysql_function_query(connects, stringx, true, "", "");



Re: Помогите с MySQL r7 - Daea - 28.10.2014

Код:
publics:OnPlayerLogin(playerid,password[])
{
    new rows, fields, maximum[68],mysql_query[256],string[63];
	cache_get_data(rows, fields);
	if(!rows)
	{
		new LOLTEST;
	    format(mysql_query, sizeof(mysql_query), "SELECT * FROM `accountz` WHERE `ID` = '%d'",PlayerInfo[playerid][pID]);
		mysql_function_query(connects, mysql_query, true, "", "");
        cache_get_field_content(0, "LogTries", maximum);
        LOLTEST = strval(maximum);
		new logtires = 3-LOLTEST;
		format(string,63,"{ff2400}Вы ввели неверный пароль!\nУ вас осталось (%d) попытки",logtires);
		SCM(playerid,-1,string);
		LOLTEST++;
		format(mysql_query, sizeof(mysql_query), "UPDATE `accountz` SET `LogTries` = '%d' WHERE `ID` = '%d'",LOLTEST,PlayerInfo[playerid][pID]);
		mysql_function_query(connects, mysql_query, false, "", "");
		if(LOLTEST >= 4) return AddBan(playerid, PlayerInfo[playerid][pName], "БАНИЛКА",0,5,"Неверный пароль");
		return true;
	}
//дальнейшая загрузка...
Вот как, например, сделать тут?
OnPlayerLogin - паблик, который вызывается через mysql_function_query


Re: Помогите с MySQL r7 - Urukhay - 29.10.2014

PHP код:
new string// строка с MySQL запросом
new row// переменная для хранения количества строк
mysql_query(connect,string); // connect - переменная подключения
row cache_num_rows();
printf("Запрос вернул %d строк.",row); 



Re: Помогите с MySQL r7 - Daea - 29.10.2014

Но ведь запросы не так посылаются