在数据库中存储图像数据,需要将存储字段设为二进制数据。下面介绍本实例中主要应用的函数。
以二进制形式上传图片到数据库主要应用了3个函数。

1、fopen函数
fopen()函数用于打开文件或者URL。语法如下:
int fopen(string filename, string mode);
字符串参数mode可以是下列的情形:
“r”开文件方式为只读,文件指针指到开始处。
“r+”开文件方式为可读写,文件指针指到开始处。
“w”开文件方式为写入,文件指针指到开始处,并将原文件的长度设为0。若文件不存在,则建立新文件。
“w+”开文件方式为可读写,文件指针指到开始处,并将原文件的长度设为0。若文件不存在,则建立新文件。
“a”开文件方式为写入,文件指针指到文件最后。若文件不存在,则建立新文件。
“a+”开文件方式为可读写,文件指针指到文件最后。若文件不存在,则建立新文件。
“b”若操作系统的文字及二进位文件不同,则可以用此参数,UNIX系统不需要使用本参数。

2、addslashes函数
Addslashes函数用于将字符串加入斜线。语法如下:
string addslashes(string str);
该函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询(query)能顺利运作。这些会被改的字符包括单引号(’)、双引号(”)、反斜线backslash()以及空字符NULL(the null byte)。

3、fread函数
fread函数用于读到指定长度的位组或到文件尾EOF。语法如下:
string fread(int fp, int length);

应用二进制方法将图片上传到数据库,关键代码如下:

<?php
if($sc<>””){
$tpmc=htmlspecialchars($tpmc);        //将图片名称中的特殊字符转换成HTML格式
$tpmc=str_replace(“n”,”<br>”,$tpmc);        //将图片名称中的回车符以自动换行符取代
$tpmc=str_replace(“”,”&nbsp;”,$tpmc);       //将图片名称中的空格以”&nbsp;”取代
$scsj=date(“y;m;d”);          //设置图片的上传时间
$fp=fopen($file,”r”);         //以只读方式打开文件
$file=addslashes(fread($fp,filesize($file)));       //将文件中的引号部分加上反斜线
$query=”insert into tb_tpsc (tpmc,file,scsj) values (‘$tpmc’,’$file’,’$scsj’)”;     //创建插入图片数据的sql语句
$result=mysql_query($query);
echo “<meta http-equiv=”refresh” content=”1;url=index.php”>图片上传成功,请稍等…”;
}
?>