大家好,我是刚学PHP的菜鸟,现在遇到一个问题,就是怎样把图片文件存入数据库中(我不想存在某个文件夹)。再将图片读取出来显示在WEB页面上。
下面这段上传代码是我在网上找的,自已改了下,如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>tupian</title>
</head><body>
<form name="image" method="post" action="savetupian.php" enctype='multipart/form-data'>
<table width="80%" border="0" cellspacing="1" cellpadding="3" align="center">
<tr>
<th clospan="2"><font size="4">上传图片范例</font></th>
</tr>
<tr>
<td>username</td>
<td><label>
  <input type="text" name="id" />
</label></td>
</tr>
<tr>
<td>the photo:</td>
<td><input type="file" name="photo" size='25'></td>
</tr>
<tr>
<td align=right><input type="submit" name="Submit" value="upload" /></td>
<td>&nbsp;</td>
</tr>
</table>
</form></body>
</html>
下面这一段是保存图片的代码。如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>savetupian</title>
</head><body>
<?php
@$photo=$_POST["photo"];
@$id=$_POST["id"];
$db=new mysqli("localhost","root","bowen","books");if ($photo<>"")
{
$fp=fopen($photo,"r");$photosize=filesize($photo);
@$data=addslashes(fread($fp));
}
//$password=md5($password);
@$sql="insert into image (id,photo) values ('$id','$data')";
$result=$db->query($sql);if ($result)
{
echo "信息已經寫入數據庫.";
}
else
{
echo "error.";
}// 关闭连接
$db->close();
?>
</body>
</html>
数据库名为image  有两个字段,id和photo  photo为longblob类型  
但是我运行这两个程序后,也会显示“信息已经写入数据库”。但我在数据库中查看这两个字段时,id是正常的,数据库有内容,但photo字段里没有任何内容,感觉图片文件没有写入数据库,这是怎么回事?恳请各位大哥多多指教!
第二个问题:
还有就是我这样存入数据库后,如果要显示在WEB上,应该怎么读取出?多张图片显示又是怎样的??请各位大哥们说详细说一下,给我一段代码,我测试下。。不胜感激!

解决方案 »

  1.   

    photo是文件控件吧,至少应该用 $_FILE['photo']来获取吧。$_POST['photo']必然为空。
      

  2.   

    $rs = addslashes(file_get_contents($_FILES['photo']['tmp_name']));
    $sql="insert into image (id,photo) values ('$id','$rs')";
      

  3.   

    第一种方法:2个for循环即可实现第二种方法:%对行和单元格求取!
      

  4.   

    大哥回复的真是一语中的。高手啊,,相当漂亮。我把你的语句复制到我那里,就可以了。。只是$_FILES['photo']换一下就可以了。我在网上找了很久,,都是一样的,都是不能用的。。感觉分数给你少了点。不要生气。。多谢!