试试看,下面的代码,我自己写的,未经测试<?
    $link=@mysql_connect("localhost","yrname","yrpass");
    //连接,用你的具体连接名替换yrname,具体连接密码替换yrpass
        if($link==false) 
           {
           print "<br><br><br>";
           print "<p><b>连接数据库时发生错误,请稍后再试!</b></p>";
           exit();
           }
    
    $qu="use yrbase";  
    // 用你的具体数据库代替yrbase
    $res=@mysql_query($qu,$link);  
        if($res==false) 
           {
           print "<br><br><br>";
           print "<p><b>打开数据库时发生错误,请稍后再试!</b></p>";
           exit();
           }          $tmpset=0;  
  // 存放成功加入的图片数目  for($i=1;$i<=4;$i++)
      { 
      // picfile[i]存放所提交的图片信息(文件路径)
      // none表示用户没有在这个文件上传框中选择文件
      if(trim($picfile[$i])!="none")
         {
         //读取数据
         $fp=fopen($picfile[$i],"r");
         $picdata=fread($fp,filesize($picfile[$i]));
         fclose($fp);
        
         //加上必要的标志符号
         $picdata=addslashes($picdata);
         
         //用具体的数据表名代替yrpict
         //pictext[i]存放所提交的图片的文字说明
         $qu="insert into yrpict(picid,picdata,pictext) values(null,'$picdata','$pictext[$i]')";
         $res=@mysql_query($qu,$link);  
               if($res==false) 
                   {
                   print "<br><br>";
                   print "<p><b>图片&nbsp;";
                   echo $i;
                   print "&nbsp;提交失败!</b></P>";
                   continue;
                   }           $tmpset=$tmpset+1;                                 
         }       }  print "<br><br>"; 
  print "<p><b>操作成功!</b></p>";  
  print "<p><b>实际入库图片数&nbsp;";
  echo $tmpset;
  print "&nbsp;</b></P>";
  exit();  }?>

解决方案 »

  1.   

    谢谢几位的关注。
    TO天牙:我的服务器不准备开通FTP服务,所以准备放图片数据入库
    TO丢丢:你的程序应该是对的,我会试试的谢了。
    TO狂沙:有点误会丢丢的程序了,他的程序的确是放图片数据入库的。代码段:
             读取数据
             $fp=fopen($picfile[$i],"r");
             $picdata=fread($fp,filesize($picfile[$i]));
             fclose($fp);
            不过还是谢谢你的参与   :)
      

  2.   

    丢丢大哥的程序应该是正确的,但是现在小妹我又有了新的麻烦:
    我是在表单的file框里提交的图片文件,用上述代码上传到数据库(MYSQL,图片数据字段类型是blob)之后,好象变成了乱码,这是怎么回事呢?是否我在表单页写错了什么?
    另外,上传文件时,我没有使用任何第三方的控件,而是直接用HTML的。
    请大家查查原因。
      

  3.   

    小七妹妹,
    其实这是正常现象,图片存入数据库中,相对于blob类型来说,数据存放形式就是二进制数据,所以你就以为是图片变成了乱码。你可以试试以下的方法:
    (1)查看表单页面是否加入了以下enctype关键字:
        <form name="formname" method="post" action="pictintodb.php"
         enctype="multipart/form-data">
    (2)如果已经加入了关键字,那就编写一个程序select出图片数据字段值,再在HTML的image src标记中echo一下,即可显示出存放的图片了。
      

  4.   

    补充说明:你要用实际的表单名代替formname,用实际的图片入库程序名代替pictintidb.php. 试试吧,有问题再来问。:)
      

  5.   

    blob类型怕是不够
    试试MEDIUMBLOB或LONGBLOB
      

  6.   

    我在表单内加上了关键字enctype="multipart/form-data"后,
    又编写了一个程序来显示select出图片数据,
    但是还是没有图片,而且系统也没报任何出错信息。怎么会变成这样呢!!我的代码如下详细:天呢!!
    不知不觉间,都这么晚了,请各位高手赐教菜妹小七。万分的谢谢!!
      

  7.   

    以下是小七写的相关主要代码:前台的图片放置页面的关键语句:
    <?
     print"<img src=\"showpict.php?picid=$pictid\" width=\"236\" height=\"154\">";
    ?>后台的showpict.php大致如下:
    <? 
    $link=@mysql_connect("localhost","XXX","XXX"); $qu="use YYY"; 
    $res=@mysql_query($qu,$link);
      
    $qu="select picid,picdata from npict where picid=$picid"; 
    $res=@mysql_query($qu,$link); $num=mysql_num_rows($res);
       if($num==0) 
          { 
          print "<br><br><br>";
          print "<p><b>没有这张图片!</b></p>";
          exit();  
          }$row=@mysql_fetch_row($res);  
     
    header("Content-type:image/");echo $row[1];exit();
    ?>
      

  8.   

    header("Content-type:image/图片后缀");
      

  9.   

    我认为问题还是在于header("Content-type:image/");我想说明几点:
    (1)请注意书写,其中Content-type的首字母C要大写,中间是连字符,不是下划
       线,并且其左右两边没有空格。
    (2)看看是否是中文字符惹的祸,即引号、冒号、分号等必须是英文输入法的
       输入字符,中文输入法的符号会让编译通不过。
    (3)Content-type:image/的写法是可以不加图片后缀的,系统会自动处理其内
       部认识的多种常见的图片类型。如果加上了也没有错,只是不太方便灵活
       了,可能让系统只会处理一种图片类型。
      

  10.   

    特别提醒:
    我在MYSQL中设置图片数据字段的类型是longblob
    设置类型为blob可也是可行的,但可能存放不了大图片数据。
    因此我建议你更改数据类型为longblob