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

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

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 22-04-2012, 00:29 Просмотров: 2037

    SQL_QuoteStringFmt Функция экранирует одинарные кавычки для запроса с возможностью форматирования

    Функция аналогична функции SQL_QuoteString, даже почти что одинаково называются. Отличительная же особенность функции SQL_QuoteStringFmt заключается в том, что она поддерживает предварительное форматирование строки.

    Инфо из sql.inc:
    /**
    * Back-quotes characters in a string for database querying.
    * Note: The buffer's maximum size should be 2*strlen(string) to catch
    * all scenarios.
    *
    * @param db                Database handle, for localization.
    * @param buffer            Buffer to copy to.
    * @param buflen            Maximum size of the buffer.
    * @param fmt                Format of string to backquote (should not overlap buffer).
    * @param ...                Format arguments.
    * @return                    Length of new string, or -1 on failure.
    */
    native SQL_QuoteStringFmt(Handle:db, buffer[], buflen, const fmt[], any:...);


    Синтаксис:
    SQL_QuoteStringFmt(Handle:db, buffer[], buflen, const fmt[], any:...)

    • Handle:db - Идентификатор соединения с базой данных
    • buffer[] - Массив куда будет записан обработанный массив
    • buflen - Его длина
    • const fmt[] - Строка для форматирования
    • any:...[] - Подставляемые значения для форматирования


    Тип функции:
    Native

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>
    #include <sqlx>

    #define PLUGIN "[SQLx.inc] SQL_QuoteStringFmt"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    new Handle:SQL_Tuple
    new Handle:g_SQL_Connection

    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 err, error[256]
        g_SQL_Connection = SQL_Connect(SQL_Tuple, err, error, charsmax(error))
        
        if(g_SQL_Connection != Empty_Handle)
        {
            log_amx("[sql ok]")
            }else{
            log_amx("[sql error] %s ",error)
            pause("a")
        }
        
        
        new name[32], unquoted_name[] = "Privet'medved"
        SQL_QuoteStringFmt(g_SQL_Connection , name, 31, "New mega Name %s",unquoted_name)
            
        new query[256]    
        format(query,charsmax(query),"SELECT * FROM dle_users WHERE `name` ='%s'",name)
        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)
            
    }
    public plugin_end(){

        SQL_FreeHandle(SQL_Tuple)
        SQL_FreeHandle(g_SQL_Connection)
        
    }


    Описание:
    Функция аналогична функции SQL_QuoteString, описание следовательно практически тоже.
    результат работы будет такой:
    SELECT * FROM dle_users WHERE `name` ='New mega Name Privet\'medved'
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Наверх

Реклама