Справочное руководство по MySQL

8.4.3.176 mysql_real_escape_string()

    8.4.3.176 mysql_real_escape_string()

    unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)

    8.4.3.177 Описание

    Эта функция используется для создания допустимой SQL- строки, которую можно использовать в команде SQL. See section 6.1.1.1 Cтроки.

    Строка из секции from кодируется в экранированную SQL-строку, принимая во внимание текущую кодировку данного соединения. Результат помещается в секцию to с добавлением концевого нулевого байта. Кодируются следующие символы: NUL (ASCII 0), `\n', `\r', `\', `'', `"' и Ctrl-Z (see section 6.1.1 Литералы: представление строк и чисел).

    Строка, указанная в секции from, должна быть длиной length байтов. Необходимо выделить для секции to буфер величиной по меньшей мере length*2+1 байтов (в наихудшем случае каждый символ может потребовать кодировки с использованием двух байтов и, кроме того, необходимо место для концевого нулевого байта). При возврате функции mysql_escape_string() содержимое секции to будет представлять собой строку с нулевым окончанием. Возвращаемая величина представляет собой длину данной кодированной строки, не включая концевой нулевой символ.

    8.4.3.178 Пример

    
    char query[1000],*end;
    
    end = strmov(query,"INSERT INTO test_table values(");
    *end++ = '\'';
    end += mysql_real_escape_string(&mysql, end,"What's this",11);
    *end++ = '\'';
    *end++ = ',';
    *end++ = '\'';
    end += mysql_real_escape_string(&mysql, end,"binary data: \0\r\n",16);
    *end++ = '\'';
    *end++ = ')';
    
    if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
    {
    	fprintf(stderr, "Failed to insert row, Error: %s\n",
    	mysql_error(&mysql));
    }
    

    Функция strmov(), использованная в этом примере, присутствует в библиотеке mysqlclient и работает подобно функции strcpy(), но возвращает указатель на концевой нуль первого параметра.

    8.4.3.179 Возвращаемые значения

    Длина величины, помещенной в секции to, не включая концевой нулевой символ.

    8.4.3.180 Ошибки

    Нет.




Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости