То есть если после запроса к базе данных получено 1 и боле строк то функция вернет 1, если 0 - то 0.
Например использоваться можно для поиска в бан листе игрока, если он найден в бан листе и не один раз ( обходы) то все равно будет положительный результат.
Хотя конечно это не правильный пример, данную функцию лучше использовать для проверки результата запроса перед выполнением цикла для обработки полученных данных.
Инфо из SQLx.inc:
/**
* Returns 1 if there are more results to be read,
* 0 otherwise.
*/
native SQL_MoreResults(Handle:query);
Синтаксис:
SQL_MoreResults ( Handle:query )
- Handle:query - дескриптор запроса. ( из примера будет понятнее что это, сам я не могу толково объяснить что это такое))
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define PLUGIN "[SQLx.inc] SQL_MoreResults"
#define VERSION "1.0"
#define AUTHOR "Admin"
new Handle:SQL_Tuple
new Handle:SQL_Connection
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("SQLx_host","localhost")
register_cvar("SQLx_db","amxxmodx")
register_cvar("SQLx_user","admin")
register_cvar("SQLx_password","pass")
register_concmd("select_sql","sqlx_select")
}
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 err, error[256]
SQL_Connection = SQL_Connect(SQL_Tuple, err, error, charsmax(error)) // Соединение с БД
if(SQL_Connection != Empty_Handle)
{
log_amx("[SQLx connect ok]") //Если соединение установлено
}else{
log_amx("[SQLX sql error] %s ",error) //Если нет и выводим причину(ошибку)
pause("a")
}
}
public sqlx_select(id){
//Подготовка Запроса
new Handle:query = SQL_PrepareQuery(SQL_Connection,"SELECT * FROM `test_table`")
// Выполняем запрос к базе даанных
SQL_Execute (query)
new sql_result = SQL_MoreResults(query)
server_print("Result status: %s",sql_result? "Ok" : "No result")
}
public plugin_end(){
SQL_FreeHandle(SQL_Connection)
}
Описание:
В данном примере используются много других функций, без которых исследуемая функция не может работать ( коннект к базе данных и другие) о них вы можете почитать в разделе SQLx данного сайта или на официальном сайте.
И так, я буду рассказывать о функции SQL_MoreResults, предполагая что с остальными функциями вы уже знакомы.
Рассматриваемая в данном материале функция работает с результатами запроса, то есть сначала соединение с базой данных, потом запрос к ней же и уже потом SQL_MoreResults.
После того как вы заполните необходимые квары и укажите таблицу в запросе к базе данных из которой будет производиться выборка, скомпилируйте плагин и установите на сервер, если вы все правильно сделаете то в консоли сервера увидите сообщение о успешном соединение к базе данных.
После этого выполните команду select_sql непосредственно в консоли сервера.
Это вызовит работу следующей функции:
public sqlx_select(id){
//Подготовка Запроса
new Handle:query = SQL_PrepareQuery(SQL_Connection,"SELECT * FROM `test_table`")
// Выполняем запрос к базе даанных
SQL_Execute (query)
new sql_result = SQL_MoreResults(query)
server_print("Result status: %s",sql_result? "Ok" : "No result")
}
Первые строки отвечают за составление и отправку запроса, нам же интересны следующие 2 строки:
new sql_result = SQL_MoreResults(query)
server_print("Result status: %s",sql_result? "Ok" : "No result")
В первой строке сначала объявляется новый массив, затем в него же получается результат работы функции, в которой указано что необходимо получить результат запроса.
Вижу правильно думаете на счет второй строчки, да да это именно вывод в консоль сервера информации о запросе.
Потренируйтесь и по экспериментируйте с этим примером, доскональна разберитесь что тут к чему.
Так как дальше будем учиться работать с самими результатами от запроса.