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 相关文章推荐
php开发工具之vs2005图解
Jan 12 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
Admin generator, filters and I18n
Oct 06 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
Sep 16 PHP
php获取301跳转URL简单实例
Dec 16 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
php微信高级接口群发 多客服
Jun 23 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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
关于js与php互相传值的介绍
2013/06/25 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
原生js实现放大镜
2017/02/20 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
vue.js中created方法作用
2018/03/30 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
Python笔记之facade模式
2019/11/20 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
酒店副总岗位职责
2013/12/24 职场文书
单位创先争优活动方案
2014/01/26 职场文书
会计演讲稿范文
2014/05/23 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
车辆委托书范本
2014/10/05 职场文书
网站出售协议书范文
2014/10/10 职场文书