在数据库中存储字符串模拟数组

时间:2015-09-16 19:20:23

标签: php mysql arrays

将大量链接存储到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));

2 个答案:

答案 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
;