if ($photo != "none")
{
////check photo extension
$pic_size = filesize($photo);
$pic = addslashes(fread(fopen($photo, "r"), $pic_size));
}

$sql = "UPDATE members SET photo = '".$pic."' WHERE id = '".$id.;

解决方案 »

  1.   

    To PcVSBirds(pc_birds) :
    不行,你这根本就没改什么呀
      

  2.   

    好像还是特殊字符的问题,我没用addslashes函数,有些中间没有特殊字符的图片插入和显示都正常但这不用addslashes显然不行呀,要不有特殊字符的图片就进不了数据库啊
    救命啊,没人遇到这种情况???
      

  3.   

    我现在这样做,不用addslashes,手工过滤
    $pic_size = filesize($photo);
    $pic = fread(fopen($photo, "r"), $pic_size);
    $pic = str_replace("\x00", "\0", $pic);
    $pic = str_replace("\x5C", "\\", $pic);
    $pic = str_replace("\x27", "\'", $pic);
    $pic = str_replace("\x22", '\"', $pic);图片能出来了,但有失真
      

  4.   

    终于搞定了,采用二进制方式读取文件,这种方式比文本方式读取可靠多了
    $pic_size = filesize($photo);
    $pic = fread(fopen($photo, "rb"), $pic_size);
    $pic = '0x'.bin2hex($pic);
    $pic_ext = $photo_type;
    unlink($photo);$sql = "UPDATE members SET photo = $pic WHERE id = '$id'";
    注意$pic不要用单引号括起来