Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 10
    Гостей: 9
    Пользователи: - отсутствуют
    Роботы: Google Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 26-11-2011, 00:17 Просмотров: 3099

    SQL_MoreResults Функция получает результативность запроса

    Функция SQL_MoreResults проверяет успешность запроса и результат.
    То есть если после запроса к базе данных получено 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")

    В первой строке сначала объявляется новый массив, затем в него же получается результат работы функции, в которой указано что необходимо получить результат запроса.

    Вижу правильно думаете на счет второй строчки, да да это именно вывод в консоль сервера информации о запросе.
    Потренируйтесь и по экспериментируйте с этим примером, доскональна разберитесь что тут к чему.
    Так как дальше будем учиться работать с самими результатами от запроса.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Наверх

Реклама