2013-07-21 3 views
2

그래서 친구를 위해 구축하고있는 웹 사이트의 데이터베이스에서 이미지를 표시하려고합니다. 그는 이미지를 업로드하고 첫 페이지에 표시 할 수 있기를 원합니다.PHP에서 데이터베이스의 이미지를 표시합니다.

이미지 업로드가 모두 작동합니다. BLOB로 데이터베이스에 저장.

이미지를 별도의 파일로 표시하기 시작했습니다. 테스트 웹 사이트에서 작업하게하고 이미지가 어떻게 표시되는지 보여줍니다. 그런 다음 코드를 실제 웹 사이트로 이동하고 필요한 방식으로 가져 왔고 작동하지 않습니다.

테스트 웹 사이트에서 다시 시도해 보았습니다. 모두 정상적으로 작동했습니다.

실제 웹 사이트에서는 작동하지 않지만 테스트 웹 사이트에서는 정상적으로 작동합니다.

실제 웹 사이트에는 테스트 웹 사이트에서 더 많은 정보가 있습니다.

다음은 테스트 웹 사이트에서 사용한 코드입니다.

image.php 여기

$query = mysql_query("SELECT * FROM images LIMIT 1"); 
while($row = mysql_fetch_assoc($query)){ 

    $image_id = $row['id']; 
    echo "<img src=showimage.php?id=".$image_id.">"; 
} 

내가 데이터베이스에서 이미지를 잡아 그것을 표시하고있어 방법이다. 테스트 웹 사이트에이 코드를 사용하여 showimage.php

include 'inc/db.php'; 

$id = addslashes($_REQUEST['id']); 

$image = mysql_query("SELECT image FROM sites WHERE id = '$id'"); 
$image = mysql_fetch_assoc($image); 
$image = $image['image']; 

header("Content-type: image/png"); 

echo $image; 

아무 문제가 없다, 잘 작동합니다.

다음은 실제 웹 사이트 코드입니다.

sites.php showimage.php 파일을 사용하여 데이터베이스에서 이미지를 잡아하지만 전혀 작동하지 않는

$select = mysql_query("SELECT * FROM sites"); 
      while($row = mysql_fetch_assoc($select)){ 

       $image_id = $row['id']; 

       echo ' 
        <tr class="bottom"><td>'.$row['host'].'</td> 
        <td>'.$row['currency'].''.$row['price'].' every '.$row['payment'].'</td> 
        <td>'.$row['domain'].'</td> 
        <td>'.$row['paid_currency'].''.$row['paid_domain'].'</td> 
        <td>'.$row['features'].'</td> 
        <td> 
         <span title="Edit '.$row['id'].'"><a href="edit.php?id='.$row['id'].'"><img src="images/edit.png" alt="Edit"></a></span> 
         <span title="Delete '.$row['id'].'"><a href="inc/delete.php?id='.$row['id'].'"><img src="images/delete.png" alt="Delete"></a></span> 
        </td> 
        <td><img src=showimage.php?id='.$image_id.'></td></tr> 
        '; 
      } 

.

+7

왜 당신은 단순히 별도의 파일로 이미지를 저장하고 그 다음이 될 수있는 데이터베이스의 경로입니다 저장하지 않습니다 src에 사용됩니까? – Virus721

+2

showimage.php의 일부 경고 메시지 또는 유사 이미지가 이미지를 손상시킬 수 있습니다. 콘텐츠 형식 헤더를 제거하면 실제 사이트에서 어떤 결과가 나타 납니까? – Joni

+1

'sites' 테이블에'image'를 어떻게 저장 했습니까? –

답변

1

데이터베이스를 사용하도록 설정 한 경우 img가 DB에 저장되는 방식에 따라 imagecreatefrompng() 기능을 사용하십시오.

addslashes() 대신 $id = (int)$_GET['id'];을 시도한 다음 $id > 0인지 확인하십시오. 마지막으로, 이미지를 BLOB가 아닌 파일 시스템에 저장하면 +1됩니다.

[여기 그리고 삽입하여 mysql_query --되지 않습니다 사용 - 더 - PDO-확장 강연]

관련 문제