如何在mysql中存储这些数据

时间:2011-07-31 05:09:06

标签: php mysql html

我正在编写一个收集并存储链接到mysql的php脚本,我遇到的问题是,有时我的脚本会获得相同下载的多个链接,例如:

http://www.fileserve.com/file/XXXXXX
http://www.fileserve.com/file/XXXXXX
http://www.filesonic.com/file/0000000
http://www.filesonic.com/file/0000000
http://www.uploadstation.com/file/AAAAAAA
http://www.uploadstation.com/file/AAAAAAA

现在我将它们存储到一个表中,其中包含ID,标题和下载链接等信息,问题是它们都在一行中,以后很难组织和排序它们?我的脚本目前支持超过20个文件主机,因此我无法为每个单独的主机创建一行。

所以我想我需要一种方法来组织链接的输出(主要是相应的分组),或者更好的存储方式。

感谢。

4 个答案:

答案 0 :(得分:2)

使用一对多的关系

我要做的是拥有songs表格id,name,title,artist等,然后是links表格id,url, and song_id,其中song_id指向songs.id专栏。

这样你就可以拥有一首歌,或者每首歌可以有50个链接。

查看此内容以获取更多信息 http://www.tekstenuitleg.net/en/articles/software/database-design-tutorial/one-to-many.html

答案 1 :(得分:0)

您可以将其拆分为两个表格。

表1: [FileName] [FileID]

表2: [FileID] [LinkID] [URL]

如果您想稍后检索文件的下载链接,可以使用

SELECT URL FROM TABLE1 T1,TABLE2 T2 WHERE T1.FileID = T2.FileID ORDER BY LinkID ASC 

答案 2 :(得分:0)

你应该创建2个表。

第一个表存储Title_IdTitle

第二个表存储Titele_IdLinks(每行1个链接,因此会有很多行具有相同的Title_Id

将所有链接存储在一行中是不好的,因为如果某行有2个链接,有些有5个链接,有些只有1个链接。这将导致许多空列并且设计不好

答案 3 :(得分:-1)

您可以使用json,因为链接将成为您可以存储在一行中的字符串。

$links = array();
$links[] = 'http://www.fileserve.com/file/XXXXXX';
$links[] = 'http://www.fileserve.com/file/XXXXXX';
$links[] = 'http://www.filesonic.com/file/0000000';
$links[] = 'http://www.filesonic.com/file/0000000';
$links[] = 'http://www.uploadstation.com/file/AAAAAAA';
$links[] = 'http://www.uploadstation.com/file/AAAAAAA';

$encoded_for_db = json_encode($links);

稍后解码

$decoded = json_decode($links); //and returns same array