已有40人关注
图片上传问题
发表在PHP图书答疑 2009-10-31
是否精华
版块置顶:
你好!
网络编程自学手册中mr\15\sl\17中能够通过浏览器操纵PHP插入图片到数据库中,但是当从浏览器中读取数据库中的图片时却不能显示,而是出现乱码,同时在图片的地方出现小红叉,而没有图片,请问是什么原因?为什么在浏览器无法读取数据库中的图片?
插入图片到数据库中的代码如下:

<?php  include("conn/conn.php");
if ($page=="") {$page=1;}
?>
<?php
$file_name = $_POST['file_name'];
$files = $_POST['files'];
if($_POST['sc']==true){
$file_name=htmlspecialchars($file_name);
$file_name=str_replace("\n","<br>",$file_name);
$file_name=str_replace(" ","&nbsp;",$file_name);
$dates=date("Y:m:d");
$fp=fopen($files,"rb");
$files=addslashes(fread($fp,filesize($files)));
if($files){
$query="insert into tb_upfile (file_name,files,dates) values ('".$file_name."','".$files."','".$dates."')";
$result = mysql_query($query,$id);
echo mysql_error();
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">请稍后···";
}else{
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">请输入图片···";
  }
}
?>


读取数据库图片的代码如下:
<?php 
$query="select * from tb_upfile where id order by id desc"; 
$lttb=mysql_query($query);
$myrow=mysql_fetch_array($lttb);
 for($i=1; $i<=count($myrow); $i++) {  //如果变量<=4,按照行进行循环,输出行
            echo "<tr>";    ?>  
        <?php  if($i==1){
                  $query="select * from tb_upfile where id order by id desc";  
  $lttb=mysql_query($query); }
  $j=1;      //设置变量$j=1
  while ($myrow=mysql_fetch_array($lttb)){   //进行while循环输出
 if ($j<=2)  {   //每行的表情图个数<=8,输出如下内容
    if ($c==0){ $c="checked"; }
?>
  <td width="550" align="center" valign="middle" bgcolor="#FFFFFF">
  <table width="265" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bgcolor="#FDB62A">
  <tr>
     <td width="74" height="25" align="center" bgcolor="#FFFFFF"><span class="STYLE2">图片名称:</span></td>
     <td width="183" bgcolor="#FFFFFF" class="STYLE2"><?php echo $myrow[file_name];?></td>
  </tr>
  <tr>
     <td colspan="2" align="center" bgcolor="#FFFFFF"><img src="image_1.php?recid=<?php echo $myrow[id];?>" border="0"></td>
     </tr>
  <tr>
     <td height="25" align="center" bgcolor="#FFFFFF" class="STYLE2">上传时间:</td>
     <td bgcolor="#FFFFFF" class="STYLE2"><?php echo $myrow[dates];?></td>
     </tr>
</table>
   </td>
      <?php  }
      $c=1;   
  ++$j;           //当表情图的个数增加时
  if($j==3){  break;  }   //当表情图的个数等于9时,跳转到下一行重新进行循环
                    }
        echo "</tr>";
}
?>
请老师给指导一下,谢谢!

分享到:
精彩评论 1
346827366
学分:0 LV1
2009-11-04
沙发
出现您所说的问题,首先看看您的PHP.INI中的全局变量是否开启,如果没有开启,请将他的值设置为On。

将php.ini文件中的,register_globals选项,将它的值设置为ON,保存后重新启动Apache服务器。


如果已经开启,请看一下这个实例中的image_1.php文件,看看是否正确的连接了您的数据库。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照