PHP在mysql中保存图像导致图像损坏

时间:2017-04-10 06:41:52

标签: php mysql blob

我有一个PHP脚本来保存上传的图像。它以前工作过,但上周没有用。

$cidimg = base64_decode( $_POST[ 'image' ] );
insertCustomerImage( $db,
                     $cid,
                     $cidimg );

function insertCustomerImage( $db,
                              $cid,
                              $cidimg )
{
    try
    {
        $sql = "INSERT INTO customer_images ( cid,
                                              cidimg )
                VALUES ( :cid, :cidimg )
                ON DUPLICATE KEY UPDATE cid = :cid,
                                        cidimg =: cidimg,
                                        created = Now()";

        $query = $db -> prepare( $sql );
        $query -> execute( array( ':cid' => $cid,
                                  ':cidimg' => $cidimg, ) );                    

    }
    catch( PDOException $e )
    {
        return false;
    }

    return true;
}

它可以将图像字符串作为BLOB插入MySQL。但是当再次阅读时,它显示为空。如下所示(不是有效的JPEG标题):

????JFIF??C  %# , #&')*)

1 个答案:

答案 0 :(得分:0)

经过长时间的检查,弄清楚了。因为我在其他子功能中更改了pdo字符。

$ db-> exec(“SET CHARACTER SET utf8”);

因此当插入mysql时,PDO改变了图像字符串解码为blob。

我只是取消注释这一行。一切都运行良好。干杯!