PHP код:
#define MySQL_Query(%0,%1[%2],%3(%4),%5,%6(%7),%8) mysql_format(%0, %1, sizeof(%1)+(%2), %3, %4),mysql_function_query(%0, %1, %5, %6, %7, %8)
/*
Пояснения:
%0 - connectionHandle
%1 - Переменная,которая будет содержать отформатированный запрос
%2 - Если допустим хотим добавить в sizeof вычисления,такие как +24(MAX_PLAYER_NAME например) или даже вычесть те же самые маркеры в строке (%s например)
%3 - Сама строка SQL запроса,с маркерами,куда будут подставляться значения
%4 - Переменные,которые будут подставляться в будучи формаитрованную SQL строку
%5 - true/false т.е вешать или не вешать паблик-обработчик нашего запроса (Коллбэк короче).
%7 - формат[] аргументов, (как в sscanf'e(почти) dsif (где d -integer,s- string,i - integer,f - float ну и т.д. короче))
%8 - сами аргументы,которые передадутся в коллбэк
*/
//Использование:
new STR[80];
MySQL_Query(conID, STR[0], "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1"(Player[playerid][pName]),true,"testQuery_result"("ds"),playerid,STR);
//Создадим тестовый коллбэк:
forward testQuery_result(playerid,str[]);
public testQuery_result(playerid,str[])
{
print("=====================================================================================");
printf("[+] testQuery_result MY ID IS: %d\n[+] AND MY STRING IS:\n [++] %s", playerid, str);
print("=====================================================================================");
//P.S я пока не стал извлекать из базы данные,т.к базу еще толком не доделал,поэтому такого примера достаточно думаю будет =)
}
//Пояснение "Использование":
new STR[80];//Создаем переменную,которая будет отформатирована
MySQL_Query(conID, STR[0], "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1"(Player[playerid][pName]),true,"testQuery_result"("ds"),playerid,STR);//Фигачим по макросу
conID - и есть connectionHandle (он же %0)
STR - Переменная,содержащая отформатированный запрос (%1)
[0] - Укажем, что ничего не прибавлять/не вычитать в sizeof (Хотя по сути он просто сделает sizeof(STR) + 0) (%2)
"SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1" - SQL запрос с маркером,куда подтсавиться ник игрока (%3)
(Player[playerid][pName]) - в скобках укажем подставляемые параметры в SQL строку (как и в макросе) МЕЖДУ ЭТИМИ СКОБКАМИ НЕ ДОЛЖНО БЫТЬ ПРОБЕЛОВ,КАК И В МАКРОСЕ,ИНАЧЕ РУГАТЬСЯ БУДЕТ (по крайней мере у меня ругается) (%4)
true - Укажем,что мы будем использовать колбэк /*В случае FALSE описано ниже*/ (%5)
"testQuery_result" - Укажем название колбэка,который будем использовать (%6)
("ds") - Параметры аргументов,которые передадим в колбэк (ТАКЖЕ НЕ ДОЛЖНО БЫТЬ ПРОБЕЛОВ) (%7)
playerid,STR - Переменные,которые будет принимать наш колбэк,это id игрока и саму отредактированную строку запроса,которую мы через printf в консоли покажем (%8)
//В случае false,если мы не хотим вызывать колбэк:
вместо true ставим false
вместо "testQuery_result" ставим: ""
вместо ("ds") ставим: ("")
и НЕ вписываем playerid,STR,а пишем: ""
//думаю нет смысла пояснять если что и про сам колбэк...