在MySQL数据库中存储图片

汗,以前一直误以为MySQL不能存储图片

在mysql中建立一个新的数据库

一个怎样储存文件的例子程序

一个怎样访问文件的例子程序

在mysql中建立一个表

CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50));

< ?php

// getdata.php3 – by Florian Dittmer <dittmer@gmx.net> // 调用方法: getdata.php3?id=<id>

if($id) {

    // 你可能需要调整主机名,用户名和密码:    @MYSQL_CONNECT( "localhost", "root", "password");
   @mysql_select_db( "binary_data");
   $query =  "select bin_data,filetype from binary_data where id=$id";    $result = @MYSQL_QUERY($query);
   $data = @MYSQL_RESULT($result,0, "bin_data");    $type = @MYSQL_RESULT($result,0, "filetype");
   Header(  "Content-type: $type");    echo $data;

}; ?>

怎样储存大于1MB的文件:

如果你想储存大于2MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改。

下面几条也许可以帮助你储存小于24MB的文件:

修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,你必须将max_filesize(在php.ini中)的值改成24000000

去掉MYSQL的数据包大小限制,在一般情况下 MYSQL 小于1 MB的数据包.

你必须用以下参数重启你的MYSQL

/usr/local/bin/safe_mysqld -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=24M

如果仍然出错:

可能是超时错误,如果你通过一个很慢的连接来储存一个很大的文件,PHP缺省的时间限制为30秒。

你可以将max_execution_time(在php.ini中)的值改为-1

2 thoughts on “在MySQL数据库中存储图片”

  1. 上面的例子在从数据库里读出图片数据时,是不是每次只读一张图的数据,好像查询语句少了条件吧,$id是怎么和查询对应的

Leave a Reply

Your email address will not be published. Required fields are marked *