1
我在后端有一个字段,在这里我输入由逗号分隔的ID - ID1,ID2,ID3 ....这些都是视频。所有ID都存储在数据库的product_videos字段中(因为它们是键入的)。显示用逗号分隔的数据库条目
如何在前端回显这些ID以便它们全都显示该产品?
我在后端有一个字段,在这里我输入由逗号分隔的ID - ID1,ID2,ID3 ....这些都是视频。所有ID都存储在数据库的product_videos字段中(因为它们是键入的)。显示用逗号分隔的数据库条目
如何在前端回显这些ID以便它们全都显示该产品?
在一个数据字段中存储逗号分隔的数据是一个坏主意。这是一个真正的痛苦操纵,所以你应该考虑修改你的数据库结构。
你还没有显示你的数据结构,所以我将给出一个基本的例子,然后解释如何改进它。我的例子假定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/>";
}
谢谢。我会尝试。 – 2012-02-20 00:47:42