PHP向MySQL数据库上传文件的问题

这是input.html文件:<html><body><formname="msgform"method="post"action="reg.php"enctype='m... 这是input.html文件:
<html>
<body>
<form name="msgform" method="post" action="reg.php" enctype='multipart/form-data'>
<input type="text" name="name"><br>
<input type="file" name="photo"><br>
<input tyep="submit" value="上传">
</form>
</body>
</html>
这是reg.php文件:
<?php
$conn=mysql_connect("localhost","user","password")
or die("不能连接数据库服务器:".mysql_error());
mysql_select_db("database",$conn) or die("不能选择数据库:".mysql_error());
$name=$_POST['name'];
$photo=$_POST['photo'];
if($photo != ""){
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize('$photo')));
$sql="insert into tablename (name,photo) values('$name','$photo');
mysql_query($sql,$conn) or die("插入数据失败:".mysql_error());
mysql_close($conn);
echo "你好";
}else{
echo "photo为空!";
}
?>
当我在input.html填写完提交之后就会显示“photo为空!”;很郁闷,$photo竟然没有接收到我所选的图片信息,请高手指点,谢了(很不好意思,我目前的财富值为1,没办法进行财富悬赏了),还请多多见谅
展开
 我来答
匿名用户
2010-11-29
展开全部
把reg.php中的第6行$photo=$_POST['photo'];改成$photo=$_FILES['photo']['tmp_name'];就好了!

当文件上传时,该文件将保存在Web服务器上的临时目录中,这是WEB服务器默认的临时目录。如果在脚本执行完成之前不移动、复制或更改文件名称,该文件将被删除。
在PHP脚本中,需要处理的数据保存在超级全局数组$_FILES中。
$_FILES['formname']['tmp_name']:文件在WEB服务器中临时存储的位置
$_FILES['formname']['name']:用户系统中的原文件名称
$_FILES['formname']['size']:文件的字节大小
$_FILES['formname']['type']:文件的MIME类型,例如:text/plain或image/gif
$_FILES['formname']['error']:任何与文件上传相关的错误代码
注:formname就是<input type="file" name="photo">的name值,在PHP脚本中你可以尝试用print_r($_FILES['formname']);显示相关数值!

你可以尝试用以下代码,完整的代码应该增加限制上传文件大小!!!
input.html文件:
<html>
<body>
<form name="msgform" method="post" action="reg.php" enctype='multipart/form-data'>
<input type="file" name="photo"><br>
<input type="submit" value="上传">
</form>
</body>
</html>

reg.php文件:
<?php
$conn=mysql_connect("localhost","user","password")
or die("不能连接数据库服务器:".mysql_error());
mysql_select_db("database",$conn) or die("不能选择数据库:".mysql_error());

//print_r($_FILES['photo']);//测试时使用

if($_FILES['photo']['error']>0){
$name=$_FILES['photo']['name'];//直接用原文件名称存入数据库比较方便使用
$photo=$_FILES['photo']['tmp_name'];
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize('$photo')));
$sql="insert into tablename (name,photo) values('$name','$photo');
mysql_query($sql,$conn) or die("插入数据失败:".mysql_error());
mysql_close($conn);
echo "上传成功";
}else{
echo "上传出错";
}//From J.L
?>
babyAn涩
推荐于2016-06-29 · 知道合伙人金融证券行家
babyAn涩
知道合伙人金融证券行家
采纳数:7678 获赞数:132050
2014年于上海市商贸旅游学校毕业,专业会计。后就读于上海市同济大学网络教育学院。

向TA提问 私信TA
展开全部

下面的代码分别用于创建mysql表和上传文件保存到mysql数据库

创建mysql表:

上传文件并保存到mysql中,通过insert语句插入

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunxiaomengsxm
2010-11-30 · TA获得超过131个赞
知道答主
回答量:172
采纳率:0%
帮助的人:109万
展开全部
$fp=fopen($photo,"r");这句不对,"r"只表示能读,没有就读不到,它不会自己去创建的,改成“r+”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谏豆f2
2010-11-28 · TA获得超过201个赞
知道小有建树答主
回答量:413
采纳率:0%
帮助的人:323万
展开全部
$_POST $_FILE
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式