Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка файла в базу данных средствами MySQL C API

28K
23 января 2009 года
Tirpitz
32 / / 05.05.2008
Как средствами MySQL C API загрузить содержимое произвольного файла в поле с типом BLOB? Выполнив обычный запрос INSERT, при этом поместив между двумя одинарными ковычками все содержимое файла? Или использовать LOAD DATA INFILE? Или есть все же более подходящие средства? Не хочется пережевывать весь файл, экранируя служебные символы...
2
23 января 2009 года
squirL
5.6K / / 13.08.2003
Код:
int
load_image (MYSQL *conn, int id, FILE *f)
{
char          stmt_buf[1024*1024], buf[1024*10], *p;
unsigned long from_len;
int           status;

  /* begin creating an INSERT statement, adding the id value */
  sprintf (stmt_buf,
           "INSERT INTO picture (pict_id,pict_data) VALUES (%d,'",
           id);
  p = stmt_buf + strlen (stmt_buf);
  /* read data from file in chunks, encode each */
  /* chunk, and add to end of statement */
  while ((from_len = fread (buf, 1, sizeof (buf), f)) > 0)
  {
    /* don't overrun end of statement buffer! */
    if (p + (2*from_len) + 3 > stmt_buf + sizeof (stmt_buf))
    {
      print_error (NULL, "image is too big");
      return (1);
    }
    p += mysql_real_escape_string (conn, p, buf, from_len);
  }
  *p++ = '\'';
  *p++ = ')';
  status = mysql_real_query (conn, stmt_buf, (unsigned long) (p - stmt_buf));
  return (status);
}

пример из поля дюбуа
28K
23 января 2009 года
Tirpitz
32 / / 05.05.2008
Спасибо. Буду адаптировать под свои нужды. Хорошо, все-таки, что есть такая функция как [COLOR="RoyalBlue"]mysql_real_escape_string()[/COLOR].
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог