Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Основы Mysql - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Основы Mysql
Оценка: ***** 1 Голосов

#1
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
Первая версия урока


Здравствуйте,эта статья - посвящение,тем кто уже освоил MxINI или Dini,тем кто гонится за оптимизацией,скоростью или просто-же за знаниями в том или ином языке.
MySQL - свободная система управления базами данных (СУБД). MySQL является решением для малых и средних приложений.Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты.

Теперь к делу.

MySQL - имеет три основные действия ,то есть Чтение,Запись,Обновление(перезапись данных).
Пример чтения данных из таблицы :
format(qwery,256,"SELECT * FROM `playerinfo` WHERE `name` = '%s' LIMIT 1",PlayerInfo[playerid][pName]);
mysql_query(qwery);//Посылает запрос к самой БД,точнее мы проверяем есть ли такой пользователь с именем X.
mysql_store_result();//Эта функция пере конвертирует данные MYSQL в язык pawno,что-то в этом роде,то есть подготавливает к работе


Что-же теперь делать нам с полученными данным,а получили-ли мы их спросите вы?

Теперь мы воспользуемся функцией


GetPlayerName(playerid,PlayerInfo[playerid][pName],24);
format(qwery,256,"SELECT * FROM `playerinfo` WHERE `name` = '%s' LIMIT 1",PlayerInfo[playerid][pName]);
mysql_query(qwery);
mysql_store_result();
if(!mysql_fetch_row_format(qwery))
{
ShowPlayerDialog(playerid,1,1,"Pawn-Wiki.Ru"","Регистрация на сервера SaMP Pawn-Wiki.Ru","Далее","");
//Показываем диалог регистрации,если такого имени нету в БД
}
else
{
//показываем окно авторизации или чего-либо другого,если это имя найдено в бд.
}



Теперь рассмотрим функции записи данных в БД.Не удивляетесь,что информации так мало,тк всё еще впереди ... :bs:

format(qwery,256,"INSERT INTO `playerinfo` (`name`,`password`,`sex`,`skin`,`money`,`lvl`,`adminlvl`,`team`,`rank`) VALUES ('%s','%s','%d','%d','%d','%d',0,
0,0)",PlayerInfo[playerid][pName],PlayerInfo[playerid]
[pPass],PlayerInfo[playerid][pSex],PlayerInfo[playerid]
[pSkin],PlayerInfo[playerid][pMoney],PlayerInfo[playerid]
[pLevel]);
mysql_query(qwery);


Через формат мы вставляет-записываем данные в таблицу "playerinfo",точнее если на языке Мускула ,то в таблицу `playerinfo`,далее мы записываем данные в определенные ячейки с определенными значениями - VALUES.Ячейки БД мы тоже пишем в таких-же скобка,что и сама таблица
`sex`


Теперь можно рассмотреть функцию обновления данных в БД.

format(qwery,256,"UPDATE `playerinfo` SET `lvl`='%d',`money`='%d' WHERE `name`='%s' LIMIT 1",PlayerInfo[playerid][pLevel],PlayerInfo[playerid]
[pMoney],PlayerInfo[playerid][pName]);
mysql_query(qwery);


Здесь мы обновляем уровень игрока и количество денег в БД с именем игрока - X ,которых может быть не больше одного.

Как-бы вступление закончилось окунемся по-глубже.

Что нам нужно для содержания сервера у себя на компьютере ?
Для начало нам нужен MySQL сервер,PhpMyAdmin.Кому как удобно,можете скачать Denwer или ,что душе угодно.
Далее нам нужны будут Mysql плагин и инклуд,так-же mysql клиент для SAMP сервера.

Далее перейдем к Pawno,нам нужно как-то же подключаться к БД.
Для этого используем данные от MYSQL от вашего MYSQL-сервера.

#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#define SQL_HOST "localhost"
#define SQL_USER "sent"
#define SQL_PASS "sent"
#define SQL_DB "sent"
#pragma tabsize 0
new qwery[512];
enum pInfo
{
pName[24],
pPass[18],
pSex,
pSkin,
pMoney,
pLevel,
pAdminLevel,
pTeam,
pRank,
pNumber
};
new PlayerInfo[MAX_PLAYERS][pInfo],pLogged[MAX_PLAYERS];
new RandomFemaleSkins[][] =
{
	{9},{10},{11},{38},{39},{40},{54},{55},{56},{63},{64},{75},{76},{77},
	{85},{87},{88},{90},{93},{131},{130},{138},{139},{141},{145},{148},{149},
	{152},{157},{169},{172},{178},{190},{192},{193},{194},{199},{198},{201},
	{207},{211},{215},{219},{225},{226},{233},{237},{244},{246},{251},{257},
	{263}
};
new RandomMaleSkins[][] =
{
    {7},{18},{19},{20},{21},{23},{27},{29},{30},{37},{44},{49},{52},{57},
	{60},{62},{66},{70},{73},{78},{82},{94},{96},{100},{111},{127},{132},
	{135},{137},{142},{144},{147},{154},{158},{164},{167},{170},{177},{181},
	{184},{185},{188},{200},{203},{212},{217},{223},{228},{230},{236},{240},
	{247},{248},{252},{254},{259},{260},{264}
};


public OnGameModeInit()
{
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
if(mysql_ping() == 1)
	{
	mysql_debug(1);
	printf("[MYSQL]: подключение успешно", SQL_DB);
	}
else printf("[MYSQL]: [ERROR]: не удалось подключиться к бд", SQL_DB);
for(new i = 0;i < 300;i++){AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);}
return 1;
}

public OnGameModeExit()
{
	mysql_close();
	return 1;
}



далее мы попробуем создать простую регистрацию с random-скинами.


public OnPlayerConnect(playerid)
{
	pLogged[playerid] = 0;
	PlayerInfo[playerid][pSex] = 0;
	PlayerInfo[playerid][pSkin] = 200;
	PlayerInfo[playerid][pMoney] = 2500;
	PlayerInfo[playerid][pLevel] = 1;
	GetPlayerName(playerid,PlayerInfo[playerid][pName],24);
	format(qwery,256,"SELECT * FROM `playerinfo` WHERE `name` = '%s' LIMIT 1",PlayerInfo[playerid][pName]);
	mysql_query(qwery);
	mysql_store_result();
	if(!mysql_fetch_row_format(qwery))
	{
	ShowPlayerDialog(playerid,1,1,"Регистрация на \"Pawn-Wiki.Ru\"","Здравствуйте,добро пожаловать на \"Pawn-Wiki.Ru\"!\nЧто-бы начать играть вам нужно:\n1.Зарегестрироваться;\n2.Заполнить анкету;\n3.Пройти обучение.\nЧто-бы зарегестрироваться,\nпожалуйте введите пароль ниже!\n\t\tPawn-Wiki.Ru","Далее","
");
	}
	else
	{
	ShowPlayerDialog(playerid,4,0,"Последние новости","Новости сервера:","Далее","");
	}
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(dialogid == 1){
	if(!strlen(inputtext)) ShowPlayerDialog(playerid,1,1,"Регистрация на \"Pawn-Wiki.Ru\"","Вы не ввели пароль!\nЧто-бы начать играть вам нужно:\n1.Зарегестрироваться;\n2.Заполнить анкету;\n3.Пройти обучение.\nЧто-бы зарегестрироваться,\nпожалуйте введите пароль ниже!\n\t\tPawn-Wiki.Ru","Далее","
");
	else {mysql_real_escape_string(inputtext,PlayerInfo[playerid][pPass]);
ShowPlayerDialog(playerid,2,0,"Выбор пола","Пожалуйста выберите пол,\nчто-бы продолжить регистрацию.\nВы мужчина или женщина?","Мужчина","Женщина");}}
	if(dialogid == 2){
	new SeX[64];PlayerInfo[playerid][pMoney] = 2500; PlayerInfo[playerid][pLevel] = 1;GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);SetPlayerScore(playerid,
PlayerInfo[playerid][pLevel]);
	if(response == 1){new RandomMale = random(sizeof(RandomMaleSkins));PlayerInfo[playerid][pSex] = 1;PlayerInfo[playerid][pSkin] = RandomMaleSkins[RandomMale][0];SetSpawnInfo(playerid,0,PlayerInfo[
playerid][pSkin],2233.7,-1165.5,1030,180,0,0,0,0,0,0);SetPlayerInterior(playerid,
15);SpawnPlayer(playerid);}
 	else{new RandomFemale = random(sizeof(RandomFemaleSkins));PlayerInfo[playerid][pSex] = 2;SetPlayerSkin(playerid, RandomFemaleSkins[RandomFemale][0]);PlayerInfo[playerid][
pSkin] = GetPlayerSkin(playerid);SetSpawnInfo(playerid,0,PlayerInfo[playerid][
pSkin],2245,-1164,1030,0,0,0,0,0,0,0);SetPlayerInterior(playerid,15);SpawnPlayer(playerid);
}
 	if(PlayerInfo[playerid][pSex] == 1){SeX="Мужчина";}
	if(PlayerInfo[playerid][pSex] == 2){SeX="Женщина";}
 	format(qwery,256,"Вы прошли все этапы регистрации!\nСпасибо за регистрацию.\nПриятной игры.\nВаше имя на сервере:%s,\nВаш пароль:%s,\nВаш пол:%s,\nВаша наличность:%d",PlayerInfo[playerid][pName],PlayerInfo[
playerid][pPass],SeX,PlayerInfo[playerid][pMoney]);
 	ShowPlayerDialog(playerid,3,0,"Конец регистрации",qwery,"Завершить","");
 	}
	if(dialogid == 3)
	{
	pLogged[playerid] = 1;
    format(qwery,256,"INSERT INTO `playerinfo` (`name`,`password`,`sex`,`skin`,`money`,`lvl`,`adminlvl`,`team`,`rank`) VALUES ('%s','%s','%d','%d','%d','%d',0,
0,0)",PlayerInfo[playerid][pName],PlayerInfo[playerid]
[pPass],PlayerInfo[playerid][pSex],PlayerInfo[playerid]
[pSkin],PlayerInfo[playerid][pMoney],PlayerInfo[playerid]
[pLevel]);
	mysql_query(qwery);
	}
	if(dialogid == 4)
	{
	BaseGet("password",PlayerInfo[playerid][pPass]);//Берем пароль из БД
	BaseGetInt("sex",PlayerInfo[playerid][pSex]);//Берем пол из БД
	BaseGetInt("skin",PlayerInfo[playerid][pSkin]);//Берем скин из БД
	BaseGetInt("money",PlayerInfo[playerid][pMoney]);//Берем наличку из БД
	BaseGetInt("lvl",PlayerInfo[playerid][pLevel]);//Берем уровень из БД
	BaseGetInt("adminlvl",PlayerInfo[playerid][pAdminLevel]
);//Берем адми уровень из БД
	BaseGetInt("team",PlayerInfo[playerid][pTeam]);//Берем фракцию из БД
	BaseGetInt("rank",PlayerInfo[playerid][pRank]);//Берем ранк из БД
	new SeX[64];
	if(PlayerInfo[playerid][pSex] == 1){SeX="Мужчина";}
	if(PlayerInfo[playerid][pSex] == 2){SeX="Женщина";}
	format(qwery,512,"\tСтатистика аккаунта\n\tКоличество лет в штате:%d\n\tВаша наличность:%d\n\tВаш пол:%s\n\tВаша работа:в разработке\n\tВы состоите в:в разработке\nЗдравствуйте,добро пожаловать на \"Pawn-Wiki.Ru\"!\nЭто имя уже уже зарегестрированно,\nвозможно вы у нас уже играете,или это имя занято.\nПожалуйста введите паароль ниже,\nесли вы у нас играете!\nЕсли вы у нас впервые,то смените имя на другое и\nпройдите регистрацию!\n\t\tPawn-Wiki.Ru",PlayerInfo[
playerid][pLevel],
	PlayerInfo[playerid][pMoney],
	SeX);
	ShowPlayerDialog(playerid,5,1,"Аторизаация на \"Pawn-Wiki.Ru\"",qwery,"Далее",""
);
	}
	if(dialogid == 5)
	{
	if(!strcmp(inputtext, PlayerInfo[playerid][pPass], false))
	{
	if(PlayerInfo[playerid][pSex] == 1 && PlayerInfo[playerid][pTeam] == 0) {SetSpawnInfo(playerid,0,PlayerInfo[playerid][pSkin],2233.7,-1165.
5,1030,0,0,0,0,0,0,0);SetPlayerInterior(playerid,15);SpawnPlayer(playerid);}
	if(PlayerInfo[playerid][pSex] == 2 && PlayerInfo[playerid][pTeam] == 0) {SetSpawnInfo(playerid,0,PlayerInfo[playerid][pSkin],2245,-1164,1030,
0,0,0,0,0,0,0);SetPlayerInterior(playerid,15);SpawnPlayer(playerid);}
	SendClientMessage(playerid, 0xFFFFFFFF, "Вы успешно авторизовались");
	SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
	GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
	pLogged[playerid] = 1;
	}
	else ShowPlayerDialog(playerid,4,1,"Аторизаация на \"Pawn-Wiki.Ru\"","Вы не правильно ввели пароль!\nПожалуйста введите его сново!","Далее","");
	}

	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	format(qwery,256,"UPDATE `playerinfo` SET `lvl`='%d',`money`='%d' WHERE `name`='%s' LIMIT 1",PlayerInfo[playerid][pLevel],PlayerInfo[playerid]
[pMoney],PlayerInfo[playerid][pName]);
	mysql_query(qwery);
	mysql_free_result();
//При выходе игрока с сервера мы сохраняем его уровень и количество денег на сервере,тк скин и пол мы сохранили при регистрации,зачем-же посылать лишние запросы?
	return 1;
}

//Ниже функции которые облегчат нам жизнь и работу с БД
BaseGet(fields[],perms[])//Функция взятия String-а из бд
{
	new fetch[256];
	mysql_fetch_field_row(fetch,fields);
	strmid(perms, fetch, 0, strlen(fetch), 255);
}
BaseGetInt(fieldi[],&permi)//Функция взятия цифрового значения из бд
{
	new fetch[256];
	mysql_fetch_field_row(fetch,fieldi);
	permi = strval(fetch);
}
BaseGetFloat(fieldf[],&Float:permf)//Функция взятия Float-а из бд
{
	new fetch[256];
	mysql_fetch_field_row(fetch,fieldf);
	permf = floatstr(fetch);
}
BaseSet(base[],fields[],perms[],opredelitel[],name[
])//Функция записи String-а в бд
{
	mysql_real_escape_string(perms,perms);
	new query[512];
	format(query,512,"UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'",base,fields,perms,opredelitel,name);
	mysql_query(query);

}
BaseSetFloat(base[],fields[],Float:perms,opredelitel[],name[
])//Функция записи Float-а в бд
{
	new query[512];
	format(query,512,"UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'",base,fields,perms,opredelitel,name);
	mysql_query(query);

}
BaseSetInt(base[],fields[],perms,opredelitel[],name[]
)//Функция записи цифрового значения в бд,но она мне не понадобилась пока,что
{
	new query[512];
	format(query,512,"UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'",base,fields,perms,opredelitel,name);
	mysql_query(query);
}





Как узнать в чем у меня ошибка,не читает или не записывает данные в бд.


Если у кого-то есть дополнения - пишите - дополню.Это мой первый урок.
PS.Для Профи,этот урок писался для новичков,точнее для опытных,кто хочет повысит свой уровень знаний с файловых ридеров до СУБД
PPS.Всегда используйте ,когда закончили использовать запрос к бд
mysql_free_result();//отчищает запрос к бд


11

#2
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
Вторая версия урока



MySQL (жарг. мускул)— свободная система управления базами данных (СУБД).
MySQL является решением для малых и средних приложений
.

Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты .
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц ...
MySQL портирована на большое количество платформ:Windows , Linux , Unix,Mac os и т.д. ,что нам дает большой выбор По для этих ОС ...

Но Mysql так-же и используется в Samp - точнее в языке pawn .

Какие-же преимущества Mysql от файлов ?
Сейчас я вам расскажу :


1.Mysql быстрее файлов ;
2.Mysql имеет такую возможность,как многозадачность ,т.е. чтение-запись одновременно
3.Ну сами включите мозги и подумайте .


Какие-же минусы у Mysql ?
Минусы есть,если слабый хостинг ,т.е. слабое оборудование на нем.
Для Mysql - сервера нужны ,как говорится "просторы" ...


Теперь перейдем к использованию Mysql в SAMP - pawn .

Mysql имеет так-же три функции работы с данными ,
как и SQLite : Чтение , Запись ,Обновление .

Чтение - SELECT
Запись - INSERT
Обновление - UPDATE

Как же пользоваться этими функциями ,и как их найти спросите вы меня .
Для работы нам понадобится:
Apache - сервер .
SaMP - сервер(Linux || Windows)
Samp Mysql - плагин,инклуд

Далее ,нам будет необходимо настроить Mysql сервер - создать БД,Пользователя и пароль ....,так же создать нужные нам таблицы .

Функции чтения,записи и обновления используются в запросах к БД .
В павно запросы происходят через функцию mysql_query(query[]);
Что-бы SaMP сервер понимал запросы,точнее ответы на эти запросы мы используем функцию mysql_store_result();
Вот пример запроса на наличие игрока в БД.



	public OnPlayerConnect(playerid)
	{
		GetPlayerName(playerid,PlayerInfo[playerid][pName],24);
	    format(qwery,sizeof(qwery),"SELECT * FROM `users` WHERE `name` = '%s' LIMIT 1",PlayerInfo[playerid][pName]);
		mysql_query(qwery);
		mysql_store_result();
		/*===============================...Авторизация на сервере...=====================*/
		if(mysql_fetch_row_format(qwery))
		{
			ShowPlayerDialog(playerid,1,1,"Авторизация на SeNT_Styles","Здравствуйте,добро пожаловать на SeNT_Styles.\nЧто-бы начать играть необходимо авторизоваться.\nПожалуйста введите пароль ниже...","Далее","");
		}
		/*===============================...Регистрация на сервере...=====================*/
		else
		{
			ShowPlayerDialog(playerid,2,1,"Регистрация на SeNT_Styles","Здравствуйте,добро пожаловать на SeNT_Styles.\nЧто-бы начать играть необходимо зарегестрироваться.\nПожалуйста введите пароль ниже...","Далее","");
		}
		return 1;
	}






Что мы имеем ?Полученные данные,что нам с ними делать-же ?


Проверяет запрос ,есть ли такой игрок и производит дальнейшие действия ,т.е. показываем окно авторизации или тд...
Если же нету такого игрока в бд ,то мы показываем ему окно регистрации .


Ну вывели мы игроку с авторизацией или-же регистрацией и что же дальше ?
Сейчас я разобью эту часть урока на 2 категории : Авторизацию и Регистрацию .

в
создаем диалоги ,точнее действия для них .

Авторизация

   switch(dialogid)
	    {
/*==============================================================================*/

		    case 1:
		    {
				BaseGet("pass",PlayerInfo[playerid][pPass]);//Запрос для получения пароля из бд ,в переменную .
				if(!strlen(inputtext)){ShowPlayerDialog(playerid,1,1,"Авторизация на Sent_Styles","Вы забыли ввести пароль.\nЧто-бы начать играть необходимо авторизоваться.\nПожалуйста введите пароль ниже...","Далее","");}
				if(strcmp(PlayerInfo[playerid][pPass],inputtext, true) == 0)
				{
                                        //Действия при правильном вводе пароля 
					return 1;
				}
				else ShowPlayerDialog(playerid,1,1,"Авторизация на Sent_Styles","Вы не правильно ввели пароль.\nЧто-бы начать играть необходимо авторизоваться.\nПожалуйста введите пароль ниже...","Далее","");
                return 1;
 		    }
}




Регистрация




		    case 2:
		    {
		    	if(!strlen(inputtext) || strlen(inputtext) < 5 || strlen(inputtext) > 32)
				{
					return ShowPlayerDialog(playerid,2,1,"Регистрация на Sent_Styles","Вы забыли ввесте пароль!\nЧто-бы начать играть необходимо зарегестрироваться.\nПожалуйста введите пароль ниже...","Далее","");
				}
format(qwery,512,"INSERT INTO `users` (`name`,`pass`) VALUES ('%s','%s') ",PlayerInfo[playerid][pName],inputtext);
mysql_query(qwery);
                        //Дальнейшие действия регистрации 
		    	mysql_real_escape_string(inputtext,PlayerInfo[playerid][pPass]);
				return 1;
		    }





Теперь обновление данных игрока

public OnPlayerDisconnect(playerid, reason)
{
BaseSetInt("users","level",PlayerInfo[playerid][pLevel]
,"Name",PlayerInfo[playerid][pName]);
/*
format(query,128,"UPDATE `users` SET `level` = '%d' WHERE `Name` = '%s'",PlayerInfo[playerid][pLevel],PlayerInfo[playerid]
[pName]);
mysql_query(query);
*/
//Дальнейшие действия 
return 1;
}




/*Набор полезных функций :D*/
	BaseSetInt(base[],fields[],perms,opredelitel[],name[]
)
	{
		new query[256];
		format(query,512,"UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'",base,fields,perms,opredelitel,name);
		mysql_query(query);
	}
/*==============================================================================*/

	BaseGet(fields[],perms[])
	{
		new fetch[128];
		mysql_fetch_field_row(fetch,fields);
		strmid(perms, fetch, 0, strlen(fetch), 255);
	}
/*==============================================================================*/

	BaseGetInt(fieldi[],&permi)
	{
		new fetch[128];
		mysql_fetch_field_row(fetch,fieldi);
		permi = strval(fetch);
	}
/*==============================================================================*/

	BaseGetFloat(fieldf[],&Float:permf)
	{
		new fetch[256];
		mysql_fetch_field_row(fetch,fieldf);
		permf = floatstr(fetch);
	}
/*==============================================================================*/

	BaseSetFloat(base[],fields[],Float:perms,opredelitel[],name[
])
	{
		new query[128];
		format(query,sizeof(query),"UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'",base,fields,perms,opredelitel,name);
		mysql_query(query);

	}

BaseSet(base[],fields[],perms[],opredelitel[],name[
])
{
	mysql_real_escape_string(perms,perms);
	new query[512];
	format(query,512,"UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'",base,fields,perms,opredelitel,name);
	mysql_query(query);

}








Автор мануала: {PFT}SeNTik
4

#3
Пользователь офлайн   Tixon 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Хорошая урок, зря только валяется на последней странице) UP!
0

#4
Пользователь офлайн   Cesare 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Класс!
0

#5
Пользователь офлайн   maksim 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

mysql_real_escape_string(inputtext,PlayerInfo[playerid][pPass]);

Небольшой вопрос,что означает эта строка?
0

#6
Пользователь офлайн   vladislav7778 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Очень полезная тема!
0

#7
Пользователь офлайн   SMETAHA 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Спасибо большое! Как раз хочу переводить мод на Mysql
0

#8
Пользователь офлайн   Maxim_Black 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Хороший урок. UP
0

#9
Пользователь офлайн   mxINI 

  • Даун какой-то
  • Вставить ник
  • Раскрыть информацию
Up
0

#10
Пользователь офлайн   AISAMP 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияmaksim (17 Октябрь 2014 - 15:07) писал:


mysql_real_escape_string(inputtext,PlayerInfo[playerid][pPass]);

Небольшой вопрос,что означает эта строка?

Проверяет функцию, чтобы не было применено ` и т.д.
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей