Я один раз сам очень долго мучился и не мог понять почему не правильно работает одна моя функция, точнее запрос к базе данных, пока не посмотрел на итоговый запрос, который отправлялся к баз данных.
Инфо из sql.inc:
/**
* Returns the original query string that a query handle used.
*/
native SQL_GetQueryString(Handle:query, buffer[], maxlength);
Синтаксис:
SQL_GetQueryString(Handle:query, buffer[], maxlength)
- Handle:query - Идентификатор выполненного запроса
- buffer[] - Массив для текста запроса
- maxlength - Максимальная длина массива
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define PLUGIN "[SQLx.inc] SQL_GetQueryString"
#define VERSION "1.0"
#define AUTHOR "Admin"
new Handle:SQL_Tuple
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("SQLx_host","127.0.0.1")
register_cvar("SQLx_db","amxxmodx")
register_cvar("SQLx_user","admin")
register_cvar("SQLx_password","pass")
}
public plugin_cfg(){
new host[33],dbase[33],user[33],pass[33]
get_cvar_string("SQLx_host",host,30)
get_cvar_string("SQLx_db",dbase,30)
get_cvar_string("SQLx_user",user,30)
get_cvar_string("SQLx_password",pass,30)
SQL_Tuple = SQL_MakeDbTuple(host,user,pass,dbase) // Создание картежа данных для соединения с БД
new query[256]
format(query,charsmax(query),"SELECT * FROM table")
new data[2]
data[0] = 44
SQL_ThreadQuery(SQL_Tuple,"QueryHandler",query,data,charsmax(data))
}
public QueryHandler(FailState, Handle:Query, error[], err, data[], size, Float:querytime)
{
if(FailState != TQUERY_SUCCESS)
{
log_amx("sql error: %d (%s)", err, error)
return
}
if( SQL_NumResults(Query) > 0 )
server_print("Sql result [%d] data[%d]",SQL_NumResults(Query),data[0])
new buffer[512]
SQL_GetQueryString(Query,buffer,charsmax(buffer))
server_print("[%s]",buffer)
}
Описание:
Пример взят из описания к функции SQL_ThreadQuery. Рекомендую ознакомится.
Сюда же добавили следующие строки:
new buffer[512]
SQL_GetQueryString(Query,buffer,charsmax(buffer))
server_print("[%s]",buffer)
SQL_GetQueryString(Query,buffer,charsmax(buffer))
server_print("[%s]",buffer)
Результатом работы же стало это:
Sql result [266] data[44]
[SELECT * FROM table_users]
[SELECT * FROM table_users]
Не забудьте изменить квары для базы данных и запрос к базе ,просто укажите другую таблицу.