Thanks for your quick response! That's just what I needed.
The secret is using mysql_escape_string to change the data such that it will not cause problems with delimiters! Thank You! > "Have A Great Scouting Day" > Ken Hylton > 7826 Falcon Ridge Drive > San Antonio, Texas 78239-4032 > 210-646-9508 (home) > 210-949-7261 (work) > 210-949-7254 (fax) > 210-287-6756 (cell) > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> -----Original Message----- From: paradoxix [mailto:[EMAIL PROTECTED]] Sent: Thursday, February 28, 2002 3:04 PM To: Kenneth Hylton Cc: [EMAIL PROTECTED] Subject: Re: INSERT blob data in C just some code I did some time ago: /* */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/fcntl.h> #include <mysql/mysql.h> MYSQL dbcon; int main(int argc, char *argv[]) { int i; char *tmpQ=malloc(2*1024*1024); char *end; int file; int size; char *mem; char tmpstr[1024]; mysql_init(&dbcon); mysql_real_connect(&dbcon, NULL, "username", "password", "dbname",0,"/tmp/mysql.sock",0); for(i=1;i<argc;i++) { file = open(argv[i], O_RDONLY); lseek(file, 0, SEEK_SET); size = lseek(file, 0, SEEK_END); lseek(file, 0, SEEK_SET); mem = malloc(size); read(file,mem,size); printf("inserting: %s\n",argv[i]); end = (char *) strmov(tmpQ,"INSERT INTO image values("); *end++ = '\''; sprintf(tmpstr,"%i",i); end = strmov(end, tmpstr); *end++ = '\''; *end++ = ','; *end++ = '\''; sprintf(tmpstr,"%i",i); end = strmov(end, tmpstr); *end++ = '\''; *end++ = ','; *end++ = '\''; end += mysql_escape_string(end, mem, size); *end++ = '\''; *end++ = ')'; mysql_real_query(&dbcon, tmpQ, (unsigned int) (end - tmpQ)); free(mem); close(file); } mysql_close(&dbcon); exit(0); return 0; } Kenneth Hylton wrote: > Howdy - > > I looked in the doc @ mysql.com and the New Riders and O'Reilly MySQL books. > > Plus, I consulted the archives as best I could and did not see an answer for > this: > > How do you insert binary data using the C API? > > I know you need to use mysql_real_query method and pass length, but how do > you delimit the blob field? > > INSERT INTO some_table (key_field,blob_field) VALUES ( 'A', '<binary > data>'); > INSERT INTO some_table SET key_field = 'A', blob_field = '<binary data>'; > > Both have the issue of having the single quote appear in the data. > > These fields I'm storing are between 10 and 2000 bytes long and there are > millions of them so I can't store them as separate files and then use the > file name like I would for a graphic or downloadable file on a web page. > > TIA! > > > "Have A Great Scouting Day" > > Ken Hylton > > 7826 Falcon Ridge Drive > > San Antonio, Texas 78239-4032 > > 210-646-9508 (home) > > 210-949-7261 (work) > > 210-949-7254 (fax) > > 210-287-6756 (cell) > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> > > --------------------------------------------------------------------- > Before posting, please check: > http://www.mysql.com/manual.php (the manual) > http://lists.mysql.com/ (the list archive) > > To request this thread, e-mail <[EMAIL PROTECTED]> > To unsubscribe, e-mail <[EMAIL PROTECTED]> > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php