PHP将图片保存到MySQL数据库中

PHP将图片保存到MySQL数据库中

如何把二进制的数据,比如说图片文件和HTML文件,直接保存在MySQL数据库中呢?我们首先应该知道,一般我们将信息插入到数据库中,这些信息都是是文本信息,而图片或文件是二进制信息,与文本信息截然不同。所以,我们先来在MySQL数据库中创建一个可以保存二进制数据的表。

进入MySQL的命令行界面,输入下面的内容。

mysql> create database binary_data;

mysql> use binary_data;

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

第一句是创建一个名为binary_data的数据库;

第二句是切换到binary_data数据库下;

第三句是创建一个名为binary_data的表,有一个自动增长的主键字段,名为id;有一个字符串字段为description,有一个类型为LONGBLOB的字段名为bin_data,它就是用来存放二进制数据的字段。其它字段还有文件名、文件大孝文件类型等,都可以为作为图片的相关属性。

这样,MySQL数据库这边就准备好了,下面我们看看PHP程序中应该如何来做。

<?PHP

//不相关的代码就省略了,下面看看PHP如何接收图片文件,然后如何保存到数据库中

//接收图片等文件

$data = addslashes(fread(fopen($up_file, "r"), filesize($up_file)));

//构造插入MySQL数据库的SQL语句

$query=" INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) VALUES ('$description','$data','$up_file_name','$up_file_size','$up_file_type')";

//执行SQL查询

$result=MYSQL_QUERY($query);

//取出执行得到的表的id

$id= mysql_insert_id();

print "<p>This file has the following Database ID: <b>$id</b>"; //显示文件在数据库中的ID

//关闭数据库连接

MYSQL_CLOSE();

?>

下面看看提交图片的表单应该怎么设计。

<form method='post' action='<?php echo $PHP_SELF; ?>' enctype='multipart/form-data'>

文件描述:

<input type='text' name='description' size='40'>

<INPUT TYPE='hidden' name='MAX_FILE_SIZE' value='1000000'>

保存文件:

<input type='file' name='up_file' size='40'>

<p><input type='submit' name='submit' value='submit'>

</form>

怎么样,看起来是不是很简单,这部分HTML代码真可谓一点技术含量都没有的。

关于PHP将图片保存到MySQL数据库中,本文就介绍这么多,希望对您有所帮助,谢谢!