2012-02-18 69 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