2011-08-26 91 views
1

我其實在這裏有幾個問題:我的最終目標是編寫一個腳本,它將自動顯示我保存在我的數據庫中的所有圖像(如果我將新圖像添加到我的數據庫(圖像URL),每次刷新我希望這些「新」圖像即時顯示)。在MySQL中保存圖片網址?

  1. 在MySQL中保存圖片URL的正確方法是什麼?目前我設置我的輸入類型爲VARCHAR;圖像網址可以嗎?

  2. 另外,目前我正在使用WAMP服務器來測試網站是如何工作的;所以我把一個圖像內的www文件夾(在我的PHP腳本相同的文件夾內)和數據庫表內我只是把URL如下:image.png
    這是正確的方式來輸入圖像的URL在我的數據庫?

  3. 在一個序列中顯示這些圖像的最佳方式是什麼?下面的代碼是我到目前爲止有:(圖像寬度會佔用頁面的約70%,使圖像不會彼此相鄰,他們將在一列形式。)

    <?php 
        $db_host="host"; 
        $db_user="user"; 
        $db_pass="pass"; 
        $db_name="name"; 
        $db_table="table"; 
    
        mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); 
        mysql_select_db($db_name) or die(mysql_error()); 
    
        $query = mysql_query("SELECT * FROM tablename"); 
        $result = mysql_query($query); 
        $num = mysql_num_rows($result); 
    
        for($count = 0; $count < $num; $count++) 
        { 
         //output the rows one by one(the actual images, not the URLs) 
         mysql_fetch_row($result); 
         echo("<br/>"); 
        } 
    ?> 
    

    我不知道我是否應該在那裏使用mysql_fetch_row ..

  4. 我希望我的圖像之間有一定的空間;我在想,最好的方法是在我的循環結尾添加一個「br」標籤,這樣每次顯示新圖像時,換行符都會被添加到頁面的末尾。是最好的辦法呢?

非常感謝!

+0

有上php.net極好的例子更換for環只需鍵入mysql – Ibu

回答

2

對於你的第一個問題,是的。對於你的第二,也是的,如果你的所有圖像都存儲在同一個目錄中。大多數情況下,這是一個偏好問題。

您的循環應該是這樣的:

for($count = 0; $count < $num; $count++) { 
     $row = mysql_fetch_assoc($result); 
     echo "<img src='". htmlspecialchars($row["image"]) ."' alt='image' />"; 
    } 

br標籤很可能是一個壞主意。在您的CSS文件中將圖像'display屬性設置爲block。網上有很多CSS手冊。

0

我已經完成了基於SQL數據庫中的圖像存儲的以前的項目。存儲圖像的最佳方式將作爲鏈接,即'/stored_images/imagefilename.png'。當您需要引用圖像時,只需將圖像放入表格中每行的while循環中即可。

即。

獲得圖像

<?php 
$query = mysql_query("SELECT * FROM tablename"); 
while ($row = mysql_fetch_array($query)) { 
echo '<img src="' . $row['column of url storage in SQL'] . '" />'; 
} 

將輸出數據庫中的所有圖像,只需更改與您在SQL數據庫存儲實際的列名稱的URL存儲在SQL列「。還與圖像存儲在表的名稱替換「表名」中的SQL查詢。

1

隨着

$query = mysql_query("SELECT * FROM tablename"); 
$result = mysql_query($query); 
$num = mysql_num_rows($result); 
你做一些事情兩次

。您不希望$query成爲mysql_query()呼叫的結果,然後再次應用mysql_query()

在這種情況下,第二次調用會發生在資源對象而不是字符串 - 您已經得到通知。通過放置"",你可以再次將它變成一個字符串,但是對於mysql來說是沒有意義的。

要驗證,請嘗試將or die(mysql_error())置於有問題的調用中。

而要解決這個問題,你可以嘗試

$query = "SELECT * FROM tablename"; 
$result = mysql_query($query) or die(mysql_error()); 
$num = mysql_num_rows($result); 

BTW:你不需要$num當你與

while ($row = mysql_fetch_row($result)) 
    // do stuff with $row 
} 
+0

非常感謝。我不能相信我沒有注意到mysql_query的重複調用。現在工作。謝謝。 :) – corecase