将大量链接存储到1 db列中的最佳方法是什么,但只有1个id并使其像数组一样?我不能让它工作,因为我需要将它们分类。< / p>
DB:
=====================
ID |链接
1 | -Links Here -
2 | - 完全分离不相关的链接 -
=====================
所以,我需要&#39;链接&#39;被分开和分类。我尝试使用explode()将它放入一个数组,但是你不能用那种方式组织它,我试着制作不同的分隔符,例如~1~,~2~,~3~但是我无法正确分类。请注意,100个链接将进入这一列,这可能听起来像是一件坏事,但是这样就可以通过这种方式识别50-100个列,只需存储链接。
Tried Code:
if($rdl['links'] != '') { $s1dl = explode("~S1~", $links); }
substr(strstr($s3dl, 'http'), strlen('http'));
echo $s3dl[0];
echo $s3dl[1];
echo $s3dl[2];
更新:基本上我需要一种用户输入字段的方法,你把链接放在其中,然后将它发送到数组中的数据库或可分类的东西,但数组最好。
所以我做了一个季节和链接领域。我有这个:
$linkadd = $db2->prepare("INSERT INTO dl (link) VALUES (:link) WHERE imdbid LIKE :id");
请注意,如果我使用编码或序列化我的意思是&#34;追加&#34;用户是否已输入到已准备好反序列化的序列化数组的链接?
我从哪里开始?
这样的事情有用吗?:
$currentlinks = unserialize($rdl['links']);
$currentlinks[] = $_POST['link'];
$newlinks = serialize($rdl['links']);
$linkadd->execute(array(':link' => $newlinks));
答案 0 :(得分:0)
如果需要将它们全部放入一个字段中,可以将它们全部放入数组中,对其进行编码,并将结果字符串存储在数据库中。你可以选择例如其中任何一个:
$valueForDatabase = json_encode($my_links);
// or
$valueForDatabase = serialize($my_links);
然后,当您从数据库中获取字段时,使用相应的解码函数:
$my_links = json_decode($valueFromDatabase);
// or
$my_links = unserialize($my_links);
答案 1 :(得分:0)
将它放在一个字段中的原因究竟是什么?我问,因为我自己已经做了一些纯粹的懒惰,以避免一个不同的表,并几乎总是后悔(甚至一年或两年)。
答案很大程度上取决于你想要得到什么。通常只需将表格链接列表id, main_id, link
然后
select group_concat(link) as thelinks from linklist where main_id = 3
甚至
select main_id, group_concat(link) as thelinks
from linklist
where main_id in (4,5,6)
group by main_id
将是最简单,最明确的解决方案。
如果您的请求不是这样,您应该明确为什么这不会解决您的特殊问题。
UPDATE1:
您仍然应该使用规范化,这意味着要创建另一个表。更新问题后,听起来你有一个link_type(bitly,adfly,其他)。
因此,您的表格dl
包含id
和其他一些字段,并且您创建了一个由{/ 1>组成的表dl_links
create table dl_links (
id int(11) not null primary key auto_increment,
dl_id int(11) not null,
link_type varchar(255), # bitly, adfly, others
link varchar(2000)
}
当新链接出现时,您不会将其存储在表dl
中,而是存储在dl_links
中:
insert into dl_links set dl_id= :id, link_type = :type, link = :link
或者如果你喜欢
insert into dl_links (dl_id, link_type, link) values (:id, :type, :link);
然后您可以按照<{p>>的方式阅读dl
的链接
select dl.id, dl_link.link_type, group_concat(dl_link.link) as linklist
from dl
inner join dl_links on dl_links.dl_id = dl.id
group by dl.id, dl_link.link_type
;