2014-03-24 94 views
1

我想知道是否有任何方法可以將圖像URL存儲在具有唯一數字ID的數據庫中,並且php頁面通過從數據庫獲取數據(圖像URL)並將其顯示給image.php頁面?MySQL數據庫存儲圖片url和php頁面顯示嗎?

這方面的一個例子是: - 具有圖像URL http://www.example.com/images/image10.jpg(其中該URL將被存儲在數據庫中,沿着10的ID) - 具有從檢索圖像URL的頁面image.php數據庫並在同一頁面(image.php頁面)上顯示圖像(並且不重定向到圖像URL) - 一個示例結果是image.php?id = 10 image.php文件將源圖像URL從圖像ID爲10的數據庫(使用我的示例:www.example.com/images/image10.jpg)並顯示它(這樣就像查看圖像一樣,就好像您正在查看www.example.com/images /image10.jpg而是URL將是http://www.example.com/image.php?id=10

是有沒有辦法做到這一點? 我是新來的PHP和MySQL,所以不太好的代碼 - 試圖實驗:)

在此先感謝!

編輯: 我認爲人們越來越困惑我的壞描述(抱歉abot)。 我注意到你的答案,你已經在你的代碼中包含了實際的圖片網址 - 我不明白爲什麼。

實例的我想這是如何工作的:

我的表將有這些精密組件: img_id img_url

的image.php文件將使用該ID獲取img_url從表image.php url的結尾。例如: - image.php?id = 10 - image.php文件將使用id(它是10),並通過檢索img_url來顯示圖像(這可能是:www.example.com/images/image10 .jpg)並顯示它 - 圖像ID將是img_id在表中。 - image.php?id = 12 - image.php文件將使用id(它是12),並通過從img_url(這將是:www.example.com/images/image12.jpg)該表並顯示它 - 圖像ID將img_id在表中。

+0

你能不能給我們一些代碼,你已經嘗試? – steven

回答

1

你可以試試這個:

//File: image.php?id=10 
//you query 
$img = 'http://example.com/sample.jpg'; // Image path from database 
$getInfo = getimagesize($img); 
header('Content-type: ' . $getInfo['mime']); 
readfile($img); 
+0

這看起來不錯,但我被你的答案感到困惑 - 我想要的PHP代碼從數據庫中根據ID源的圖像URL,然後顯示圖像 - 例如Image10.jpg將有一個唯一的數字ID在數據庫 - 這是10.因此,我希望image.php通過首先得到的ID來顯示圖像(如:image.php ID = 10?),並使用圖像URL來顯示圖像 - 其中圖像的URL將是對相同的行(或將是同一記錄的一部分)與ID爲'10'的記錄相同。 –

+0

您的評論對我而言並不明確。請以更簡單的方式解釋,所以可能我可以幫助你。 –

0

我想你需要的是這樣的:

$image_path="http://example.com/image10.jpg";' 'mysql_query("INSERT INTO table VALUES ('',$image_path)");

在php

有這樣的:

$id=$_GET['id'];if (isset($_GET['id'])){' '$result = mysql_query("SELECT path FROM table WHERE id=$id");' '$row = mysql_fetch_row($result);' '$path=$row[0];echo "Image number ".$id." is <img src='".$path."'>';}

+0

感謝您的回答。我很困惑,雖然 - 爲什麼圖像的URL會在這個PHP代碼中,如果PHP文件必須從數據庫中獲取圖像URL? –

+0

你說你想要的鏈接是這樣的:http://www.example.com/image.php?id=10。這意味着你想通過鏈接發送id。 PHP從$ _GET ['id']的鏈接中獲取id。然後在數據庫中搜索具有此ID的圖像。當它發現它需要路徑。如果所有的圖像看起來是這樣的:圖片10圖片11等可以使用$ PATH = 'HTTP://www.example.com/image.php ID =?'; $路徑= $ _ GET [ 'ID']。 $ PATH = 'JPG。'。此代碼將生成http://www.example.com/image.php?id=10。用「。=」連接字符串。 – Alex7

+0

Mysql的注入將在這裏工作很輕鬆,還可以使用mysqli_ *功能mysql_ *標記爲棄用 – demonking

0

這一切取決於你的代碼組織,讓我解釋一下我的自我,現在在我心中,我可以想到兩種組織方式:

首先,使用包含所有圖像的文件夾,每個圖像具有相同的名稱+編號;例如:images/img1.jpg - images/img2.jpg - images/img3。JPG等

使用這種方法你不必使用連數據庫,只需在您的網頁,你去這個代碼,用於爲例頁面http://exemple.com/images.php?id=10

$id = (isset($_GET["id"]))? $_GET["id"] : NULL; //Get the ID 

然後使用由user3410107

給出的方法
$img = "http://example.com/img$id.jpg"; // Image path 
$getInfo = getimagesize($img); 
header('Content-type: ' . $getInfo['mime']); 
readfile($img); 

第二種方法確實是使用數據庫,在這種情況下,應該有分貝內至少2列,一個唯一的ID +圖片的路徑,在這種情況下,你會去:

$query = mysql_query("SELECT id, imagePath FROM table WHERE id = $id"); 
while($data = mysql_fetch_assoc($query)){ 
$img = $data["imagePath"]; 
} 

一旦你的圖像路徑,相同的過程之前:

$getInfo = getimagesize($img); 
header('Content-type: ' . $getInfo['mime']); 
readfile($img); 

出於安全考慮加入這一行$ id變量後

$id = (isset($_GET["id"]))? $_GET["id"] : NULL; //Get the ID 
$id = mysql_real_escape_string($id); 
+0

請使用mysqli_ *功能,mysql_ *標記爲過時 – demonking

+0

謝謝!第二種方法是我想要的方法! –

相關問題