我在后端有一个字段,我在其中输入以逗号分隔的ID - ID1,ID2,ID3 ....实际上这些是视频。所有ID都存储在数据库中的product_videos字段中(因为它们是键入的)。
如何在前端回复这些ID,以便他们都展示产品?
答案 0 :(得分: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 |
在此示例中,每个视频都是db表中的一个单独行(并且每个视频都链接到现有用户)。每行都可以独立处理。这使得处理每个视频的额外数据变得非常容易,例如标题,运行时长度,上传日期等。
然后,您需要运行JOIN查询。 e.g。
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/>";
}