PHP脚本数据库功能详解(中)


Posted in PHP onOctober 09, 2006

利用PHP将文件保存到数据库

数据库是数据组织、存储的中心。将要处理的也可能是各种数据,包括程序、文件、报表,甚至音频、视频数据。由于通过浏览器,个人用户只能填写少部分的个人简历。因此,我们这里示范用户个人简历上载的功能。其他类型的数据可以模仿此例进行操作。

首先是信息收集页面。让用户选择要上载的文件。此页面的html代码如下:

〈!-- begin of post.htm--〉

〈p〉 〈/p〉

〈form method="POST" action="insert.php" ENCTYPE="multipart/form-data"〉

〈p〉〈b〉个人简历提交〈/b〉〈/p〉

〈p〉姓名:〈br〉

〈input type="text" name="Name" size="20"〉〈/p〉

〈p〉个人简介:〈br〉

〈textarea rows="2" name="Intro" cols="20"〉〈/textarea〉〈/p〉

〈p〉简历文件:〈br〉

〈input type="file" name="ResuFile"〉〈/p〉

〈p〉〈input type="submit" value="提交" name="B1"〉〈/p〉

〈/form〉

〈!-End of post.htm--〉

注意,ENCTYPE关键字一定不能省,否则文件无法正确上载。

这里,我们再把向数据库插入记录的代码重新设计:

〈?

//begin of file insert.php

if($ResuFile != "none")

//确定用户选择了文件

{

$Size = filesize($ResuFile);

//确定文件大小

$mFileData = addslashes(fread(fopen($ResuFile, "r"), $Size));

//读取文件,对内容进行处理

unlink($ResuFile);

//删除上载临时文件

}

$LinkID=@mysql_connect("localhost", "root" , "") or die("不能连接到数据库服务器!可能是数据库服务器没有启动,或者用户名密码有误!");

$DBID = @mysql_select_db("ResumeDB",$LinkID) or die("选择数据库出错,可能是您指定的数据库不存在!");

$query = "insert into Resume(Name,Intro,ResuFile) values('$Name', '$Intro', '$mFileData')";

$result = @mysql_query("$query",$LinkID); //执行查询,插入文件到数据库

if(! $result)

echo "数据插入失败!";

else

echo "文件上载成功!";

@mysql_close($LinkID);

//end of file insert.php

?〉

有了上面的基础,写出从数据库读数据的程序应该很简单了。需要注意的是文件向客户发送的方法。服务器必须向浏览器发送头信息,说明将要发送的数据为word文档。如果用户计算机装有MSWord,浏览器将自动调用word进行文档显示。

我们可以设置一个超级链接,来下载这个Word文件:

〈?

//begin of file show.php

$LinkID=@mysql_connect("localhost", "root" , "") or die("不能连接到数据库服务器!可能是数据库服务器没有启动,或者用户名密码有误!");

$DBID = @mysql_select_db("ResumeDB",$LinkID) or die("选择数据库出错,可能是您指定的数据库不存在!");

$query = "insert into Resume(Name,Intro,ResuFile) values('$Name', '$Intro', '$mFileData')";

$result = @mysql_query("$query",$LinkID);

//执行查询,插入文件到数据库

$query= "select ID,Name,Intro from Resume";

//生成SQL语句

$result = mysql_query($query,$LinkID); //执行,结果集保存到变量$result中

$num= mysql_num_rows($result); //取得查询返回的记录行数

if($num == 0)

{

echo "没有找到任何记录";

exit();

}

while($row=mysql_fetch_array($result)) //取结果集的下一行数据到数组$row中

{

echo $row["ID"]." ".$row["Name"]." ".$row["Intro"]." ";

echo "〈a href= "download.php?ID=".$row["ID"].""〉查看Word文档〈/a〉〈br〉";

}

//end of file show.php

?〉

访问文件show.php,用户看到的是个人简要信息的列表。点击“查看Word文档”,即可看到对应成员详细的个人简历。

Word文档的显示是用下面的文件:

〈?

// begin of file download.php

$LinkID=@mysql_connect("localhost", "root" , "") or die("不能连接到数据库服务器!可能是数据库服务器没有启动,或者用户名密码有误!");

$DBID = @mysql_select_db("ResumeDB",$LinkID) or die("选择数据库出错,可能是您指定的数据库不存在!");

$query = "select ResuFile from Resume where ID=$ID";

//$ID为调用传递的变量

$result = @mysql_query("$query",$LinkID);

//执行查询,从数据库读取文件内容

if(mysql_num_rows($result) 〈 1 )

{

echo "没有找到相应的文件!";

exit();

}

$row = mysql_fetch_array($result);

$mFileData = $row["ResuFile"];

//读取个人简历的内容(Word文件格式的数据)

header("Content-type: application/msword");

//发送头信息,说明将要发送的数据为word文档

echo $mFileData;

//发送文档数据

//end of file download.php

?〉

至此,我们已经实现了个人简历的提交、数据库存储、信息浏览等功能,基本完成了“人才信息交流”的框架功能。

需要说明的是,通过PHP进行文件上载及数据库存储是个较突出的技术难题。很多关于PHP的网站都不断出现这类问题。这些操作,对平台、环境设置依赖性较大。不同的平台配置,都可能导致操作的失败。本文后面附了上述程序的运行平台、编译参数,以供参考。

PHP 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
简单的php 验证图片生成函数
May 21 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
PHP页面中文乱码分析
Oct 29 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 PHP
PHP脚本数据库功能详解(上)
Oct 09 #PHP
屏蔽浏览器缓存另类方法
Oct 09 #PHP
使用网络地址转换实现多服务器负载均衡
Oct 09 #PHP
php抓即时股票信息
Oct 09 #PHP
利用PHP动态生成VRML网页
Oct 09 #PHP
一个SQL管理员的web接口
Oct 09 #PHP
如何实现给定日期的若干天以后的日期
Oct 09 #PHP
You might like
PHP中Date获取时间不正确怎么办
2008/06/05 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP安全下载文件的方法
2016/04/07 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
python中argparse模块用法实例详解
2015/06/03 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
python实现批量监控网站
2016/09/09 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
《世界多美呀》教学反思
2014/03/02 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
《叶问2》观后感
2015/06/15 职场文书
七一表彰大会简报
2015/07/20 职场文书
mysql部分操作
2021/04/05 MySQL
python实现简单倒计时功能
2021/04/21 Python
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers