0

データベースから画像を取得しようとするために使用しているコードは次のとおりです。

<?php
if($id) 
{
    //please change the server name username and password according to your mysql server setting
    $mysql_server="localhost";
    $mysql_username="myuser";
    $mysql_password="mypass";
    $mysql_database="mydb";
    //connect to database using above settings
    @MYSQL_CONNECT("localhost",$mysql_username,$mysql_password);
    @mysql_select_db("mydb");   
    //select the picture using the id
    $query = "select bin_data,filetype from todo where id=$id";
    //execute the query
    $result = @MYSQL_QUERY($query);
    //get the picture data which will be binary
    $data = @MYSQL_RESULT($result,0,"bin_data");
    //get the picture type. It will change according to file extension it may be either gif or jpg
    $type = @MYSQL_RESULT($result,0,"filetype");
    //send the header of the picture we are going to send
    Header( "Content-type: $type");
    //send the binary data
    echo $data;
};


?>

要求された画像を表示する代わりに、次のアイコンを表示します: (何と呼んでいるかわかりません)... http://i.imgur.com/bo6Jg.png

ここに私のテーブルのすべての列があります: http://i.imgur.com/PuWvl.png

私はすべてを正しく行っていると確信しています...何が起こっているのかわかりません。誰か助けて?前もって感謝します!

4

2 に答える 2

1

IMOのみの定数は大文字にする必要があります(大文字にできることを喜んで知りませんでした)、

とにかくこれを試してください:

<?php
$file_not_found = '../not_found_image.jpg';
//Get the id param from GET else null
$id = (isset($_GET['id']) && is_numeric($_GET['id']))?$_GET['id']:null;

if($id != null) {
    $mysql_server="localhost";
    $mysql_username="myuser";
    $mysql_password="mypass";
    $mysql_database="mydb";
    //Connect to database using above settings
    mysql_connect($mysql_server,$mysql_username,$mysql_password) or die(mysql_error());
    mysql_select_db($mysql_database) or die(mysql_error());
    //Select the picture using the id
    $query = "SELECT `bin_data`, `filetype` FROM todo WHERE id=".(int)mysql_real_escape_string($id)." LIMIT 1";
    //Execute the query
    $result = mysql_query($query);

    //Found
    if(mysql_num_rows($result)==1){
        //Get the picture data which will be binary
        $data = mysql_result($result,0,"bin_data");
        //Get the picture type. It will change according to file extension it may be either gif or jpg
        $type = mysql_result($result,0,"filetype");
        //Send the header of the picture we are going to send + cache
        header('Cache-Control: private, max-age='.(60*60*24*365));
        header('Expires: '.gmdate(DATE_RFC1123,time()+60*60*24*365));
        header("Pragma: private");

        header('Content-Type: '.$type);
        header('Content-Length: ' . strlen($data));
        //Send the binary data
        echo $data;

    }else{
    //Not found
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file_not_found));
    readfile($file_not_found);
    }

}else{
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file_not_found));
    readfile($file_not_found);
}
?>
于 2012-04-19T03:40:08.377 に答える
0

これを試して..

 header("Content-type: image/gif"); 
 $expires = 60*60*24*14; 
 header("Pragma: public");
 header("Cache-Control: maxage=".$expires);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
 error_reporting(0);
 require_once "class/dbconn.php";
 $id=$_GET['id'];

 $sql="select thumbimage from image where img_id=$id";
 $rs=mysql_query($sql) or die (mysql_error());
 $row =mysql_fetch_array($rs,MYSQL_BOTH);
 $data = $row[0];
 print $data;
于 2012-04-19T05:51:40.823 に答える