2012-05-16 122 views
-1

我有一個給定的表結構如何從MySQL表中獲取圖像

 | ID |    IMAGE    | 
    | 01 |   123.jpg    |  
    | 02 | http://localhost/test/logo.jpg |  
    | 03 | http://localhost/test/pic.jpg |  
    | 04 |   image.png    |  

我得到的圖像如下圖所示

$qry="SELECT IMAGE FROM `table`"; 
$res=mysql_query($qry); 
while($row=mysql_fetch_row($res)){ 
    if($row[0]) 
    { 
     $pic="http://localhost/test/".$row[0]; 
    } 
    else 
    { 
     $pic=""; 
    } 
    echo $pic; 
} 

,但它不是爲02,03圖像

+0

$ pic的輸出值是多少? – Jeremy1026

+0

for 01)http://localhost/test/123.jpg for02)http:// localhost/test/http://localhost/test/logo.jpg就像上面那樣 –

+0

如何檢查$ row [0 ]'已經以「http://」或「https://」開頭,並且只有在完整的URL沒有時纔會加上? –

回答

-1
正常工作

我認爲你改變你的代碼從

$pic="http://localhost/test/".$row[0]; 

$pic="http://localhost/test/".$row[1]; 

,因爲你的圖像列是$行[1]

+0

查詢只是抓住'image'列 –

+0

不,它不是。只有一列被查詢。這使得'$ row [0]' – Andy

+0

我的壞...我沒有正確查詢查詢 – Arfeen

2

以下內容僅預先考慮完整的URL時給定的值還沒有以「http://」或「https ://「:

if($row[0]) 
{ 
    if (stripos($pic, "http://") === false && stripos($pic, "https://") === false) 
     $pic="http://localhost/test/".$row[0]; 
    else 
     $pic=$row[0]; 
} 
else 
{ 
    $pic=""; 
} 
0

您似乎沒有一種標準的方式將圖像存儲在表格中。如果這些是唯一的格式,則在將圖像字符串放在一起之前,您需要添加某種檢查。

while($row=mysql_fetch_row($res)){ 
if($row[0]) 
    { 
    if 
    $pic = (strpos($row[0], "//") === false) ? "http://localhost/test/".$row[0]: $row[0]; 
    } 
    else 
    { 
    $pic=""; 
    } 
echo $pic; 
} 
-1

顯然,你得到這個網址的圖片02和03:

http://localhost/test/http://localhost/test/logo.jpg 
http://localhost/test/http://localhost/test/pic.jpg 

這顯然是不好的形成。 也許您想將此添加到您的代碼中...

if($row[0]) 
    { 
    if (strpos($row[0],'/')) { 
    $pic=$row[0]; 
    } else { 
    $pic="http://localhost/test/".$row[0]; 
    } 
} else ... 
+0

檢查「/」是不夠的,因爲'$ row [0]'可能包含類似'pathcomponent/file。 jpg',它必須有協議部分的前置。 –