William Miller <[EMAIL PROTECTED]> wrote:
> I am new to MySQL  and I was trying to find out how to setup a record
> with a  datatype as a image  ....jpg etc...

I have recently done just that.  Here is my table structure:

CREATE TABLE IF NOT EXISTS Item_binary (
  entry int(11) NOT NULL,
  vidx smallint(6) NOT NULL,
  content_type varchar(255) NOT NULL,
  value blob,
  UNIQUE KEY (entry, vidx),
  KEY (content_type)
) TYPE=MyISAM PACK_KEYS=1 CHECKSUM=1;


More generically, you might want something like:

CREATE TABLE IF NOT EXISTS Image (
  id int(11) NOT NULL AUTO_INCREMENT,
  content_type varchar(255) NOT NULL,
  value blob,
  UNIQUE KEY (id),
  KEY (content_type)
) TYPE=MyISAM PACK_KEYS=1 CHECKSUM=1;


You will need a few tricks in order to fetch and store binary data.
Here is the Perl code I use for fetching:

    # Make sure that LongReadLen is set properly, otherwise the data will
    # be truncated by DBI.pm.
    
    my $save_len = $LDB::dbh->{LongReadLen};
    $LDB::dbh->{LongReadLen} = 128 * 1024;
    
    my $sth = $LDB::dbh->prepare("SELECT value FROM Item_binary
                                  WHERE entry = $qid AND vidx = $qvidx");
    
    $LDB::dbh->{LongReadLen} = $save_len;
    
    $sth->execute;
    croak $DBI::errstr if $DBI::errstr;
    
    my ($data) = $sth->fetchrow_array();
    print STDOUT $data;
    
    return;

Here is a simplification of the code that I use for storing:

    # Here we assume that $buf is a string containing packed binary data.

    my $qtype = $dbh->quote( $content_type || 'image/jpeg' );
    
    my $sth = $LDB::dbh->prepare("INSERT INTO Item_binary 
                                    (entry, vidx, content_type, value) 
                                  VALUES ($id, 1, $qtype, ?)");
    
    $sth->bind_param(1, $buf);
    $sth->execute();

If you are using a different API, you're on your own...

---------------------------------------
Dr. Michael McClennen                                    [EMAIL PROTECTED]
Internet Public Library                                  http://www.ipl.org/
University of Michigan                                   +1 734 764 3417
550 E. University, Rm. 304                               
Ann Arbor, MI 48109-1092  USA

---------------------------------------------------------------------
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

Reply via email to