2012-02-18 89 views
1

我在後端有一個字段,在這裏我輸入由逗號分隔的ID - ID1,ID2,ID3 ....這些都是視頻。所有ID都存儲在數據庫的product_videos字段中(因爲它們是鍵入的)。顯示用逗號分隔的數據庫條目

如何在前端回顯這些ID以便它們全都顯示該產品?

回答

3

在一個數據字段中存儲逗號分隔的數據是一個壞主意。這是一個真正的痛苦操縱,所以你應該考慮修改你的數據庫結構。

你還沒有顯示你的數據結構,所以我將給出一個基本的例子,然後解釋如何改進它。我的例子假定product_videos被鏈接到特定的用戶:

table: `users` 
    | user_id | user_name | product_videos | 
    |---------|-----------|----------------| 
    | 1  | User1  | 1,2,3,4,6,7 | 
    | 2  | User2  | 5    | 

您將可能運行一個查詢

SELECT `product_videos` FROM `users` WHERE `user_name` = 'User1' 

這會給你一個排,用逗號分隔值 - 那麼你就需要使用一些像PHP的explode()將其轉換爲數組,然後遍歷該數組。這是一種非常糟糕的方法(當你嘗試做更高級的事情時,它只會變得更難)。

相反,使用鏈接表會更容易。想象:

table: `users` 
    | user_id | user_name | 
    |---------|-----------| 
    | 1  | User1  | 
    | 2  | User2  | 

table: `videos` 
    | video_id | user_id | 
    |-----------|---------| 
    | 1   | 1  | 
    | 2   | 1  | 
    | 3   | 1  | 
    | 4   | 1  | 
    | 5   | 2  | 
    | 6   | 1  | 
    | 7   | 1  | 

在這個例子中,每個視頻處於分貝表中的單獨行(以及每個視頻被鏈接到現有的用戶)。每行很容易被獨立處理。這使得處理每個視頻的額外數據非常容易,例如標題,運行時長度,上傳日期等。

然後,您需要運行JOIN查詢。例如

SELECT `videos`.`video_id` FROM `videos` 
    INNER JOIN `users` ON `users`.`user_id` = `videos`.`user_id` 
    WHERE `users`.`user_name` = 'User1' 

在PHP中,你會做這樣的事情:

$q = mysql_query("SELECT `videos`.`video_id` FROM `videos` INNER JOIN `users` ON `users`.`user_id` = `videos`.`user_id` WHERE `users`.`user_name` = 'User1'"); 

while ($row = mysql_fetch_assoc($q)) { 
    echo "VIDEO ID = " . $row["video_id"] . "<br/>"; 
} 
+0

謝謝。我會嘗試。 – 2012-02-20 00:47:42