2011-10-17 17 views
22

phpmyadmin을 사용하여 테이블로 MySQL 데이터베이스를 만들었습니다. jpeg 파일을 저장할 BLOB 열이있는이 테이블을 만들었습니다.MySQL 데이터베이스에서 이미지를 검색하고 HTML 태그에 표시하는 방법

여기 PHP 변수 $result과 관련된 문제가 있습니다. 지금까지

내 코드 : (catalog.php) :

<body> 
<?php 
    $link = mysql_connect("localhost", "root", ""); 
    mysql_select_db("dvddb"); 
    $sql = "SELECT dvdimage FROM dvd WHERE id=1"; 
    $result = mysql_query("$sql"); 
    mysql_close($link); 

?> 
<img src="" width="175" height="200" /> 
</body> 

가 어떻게 HTML에 PHP에서 변수 $ 결과를 얻을 수 있습니다 그래서 그것은 <img> 태그에 표시 할 수 있습니까?

+1

_Whaaaat_ issues? 지금 코드가 잘못된 것을 말해야합니다. – Bojangles

+1

그 결과를 가져 와서 시작할 수 있습니다 –

+0

BLOB 이미지를 표시하는 구문이 명확하지 않습니다 – exxcellent

답변

33

당신은 할 수 없습니다. 이미지 데이터를 반환하는 다른 PHP 스크립트를 만들어야합니다. getImage.php. 변경 catalog.php에 :

<body> 
<img src="getImage.php?id=1" width="175" height="200" /> 
</body> 

다음 getImage.php는

<?php 

    $id = $_GET['id']; 
    // do some validation here to ensure id is safe 

    $link = mysql_connect("localhost", "root", ""); 
    mysql_select_db("dvddb"); 
    $sql = "SELECT dvdimage FROM dvd WHERE id=$id"; 
    $result = mysql_query("$sql"); 
    $row = mysql_fetch_assoc($result); 
    mysql_close($link); 

    header("Content-type: image/jpeg"); 
    echo $row['dvdimage']; 
?> 
+0

thnk @ daiscog.Its 잘 작동합니다. 매우 많이 –

+0

고맙습니다.하지만, 내 DB에 거의 50 개의 이미지가 있습니다. 하나의 이미지 만 얻으려고 작성했습니다.페이지에 전체 이미지를 표시하는 방법 –

+2

DB에서 다른 이미지를 얻으려면'id' get 매개 변수를 변경하기 만하면됩니다 : ' ...' – megaflop

2

필요한 정보를 검색하고 차단해야합니다.

while($row = mysql_fetch_array($result)) { 
echo "img src='",$row['filename'],"' width='175' height='200' />"; 
} 
1

먼저 쿼리의 결과 집합에서 결과 행을 가져와야합니다. 이를 위해 mysql_fetch_row을 사용할 수 있습니다. 이제 가져온 행에 가져온 값에 액세스하여 src에 에코 할 수 있습니다. 예를 들어

:

$sql = "SELECT dvdimage FROM dvd WHERE id=1"; 
$result = mysql_query($sql); 
$row = mysql_fetch_row($result); 
?> 
<img src="<?=$row[0]?>" width="175" height="200" /> 
<? 
+1

원본 이미지 데이터를 img src 내에 넣을 수 없습니다. OP는 데이터베이스가 이미지 파일에 대한 경로가 아니라 이미지 데이터를 저장한다는 것을 명확하게 명시합니다. 또한' megaflop

+0

@daiscog 나는 질문을 잘못 읽었지만 정답은 받아 들였고 코드는 어떻게해야하는지에 대한 흐름을 설명했습니다. mysql에서 데이터를 가져온다. – Marcus

1

가) (당신는 mysql_query 후 $row = mysql_fetch_object($result);을 추가 할 것입니다;

당신의 HTML <img src="<?php echo $row->dvdimage; ?>" width="175" height="200" />

+0

원본 이미지 데이터를 img src에 넣을 수 없습니다. OP는 데이터베이스가 이미지 파일에 대한 경로가 아니라 이미지 데이터를 저장한다는 것을 명확하게 명시합니다. – megaflop

+0

감사합니다. 나는 그가 길을 접근하고 있다고 생각했습니다. – punit

21

기술적으로 data URIs를 사용하여 img 태그에 도 넣어 이미지 데이터. 대부분의 경우는 별도의 스크립트 like daiscog suggests을 통해 이미지를 제공하는 것이 더 낫다 있지만

<img src="data:image/jpeg;base64,<?php echo base64_encode($image_data); ?>" /> 

이도 도움이 될 수있는 몇 가지 특별한 경우가 있습니다.

+0

누군가가 데이터 URI를 제안할지 궁금합니다. 별로 효율적이지는 않지만 IMO (브라우저/프록시 캐싱 없음), 확실히 메모할만한 가치가 있습니다. – megaflop

관련 문제