我想存储100个URL和100个锚文本,并且它们在一起形成链接时连接,例如url_01 / anchor_01,然后另一个集合是url_02 / anchor_02。
因此,我创建了100个网址字段和100个锚点字段,以便将我的数据存储到具有其他客户价值的行中。
在使用了一套之后我想从数据库中删除它,现在我正在考虑添加一个计数器来识别我们必须采取的组合:
$count=$all_anchors['count'];
$anchor=$all_anchors['anchor_<?php echo $count; ?>'];
echo $anchor;
我知道这适用于标准的PHP / HTML,如:
<?php $count=$all_anchors['count']; ?>
<a href="http://www.website.com/?id=<?php echo $count; ?>">anchor</a>
但它无法识别数据库中的字段。
希望有人可以帮助我,重要的是我知道ID,例如与价值相对应的数字,因为我想在使用它之后将其清空。
答案 0 :(得分:0)
这是一个不会扩展的糟糕设计,为了回答您的问题,您必须遍历每一列以匹配您正在寻找的URL值(并且当然您知道行ID是您&# 39;重新审视)。 喜欢
UPDATE TABLE SET col1=if(col1='url_01','',col1),col2=if(col2='url_01','',col2) ... where id=<row_id>
等等......
类似地,对于锚标签。
建议:
你应该创建三个非规范化表:
1. urls :记录所有可用的网址
id url created_at
1 url_001 2017-06-10
2 url_002 2017-06-10
2。 锚点:记录所有可用的锚点
id anchor created_at
1 anc_001 2017-06-10
2 anc_002 2017-06-10
3。 url_anchors :映射表,您可以使用customer_id将任何网址附加到任何锚标记(不再重复相同的网址或锚值)。如果不需要,建议不要进行物理删除,而是将行(is_deleted)标记为已删除。(index url_id和anchor_id)
id url_id anchor_id customer_id created_at is_deleted deleted_at
1 1 1 tom 2017-06-10 0 NULL
1 1 2 tom 2017-06-10 0 NULL
1 2 2 tom 2017-06-10 1 2017-06-10
搜索查询:
update
urls u
join url_anchors ua on u.id=ua.url_id
join anchors a on a.id=ua.anchor_id
set
is_deleted=1,
deleted_at=now()
where
u.url=<searched url>
and a.url=<searched anchor>
删除查询(不推荐):
delete
ua
from
urls u
join url_anchors ua on u.id=ua.url_id
join anchors a on a.id=ua.anchor_id
where
u.url=<searched url>
and a.url=<searched anchor>
答案 1 :(得分:0)
您需要clients
table
,其中您将拥有一些特定于客户端的列。例如:
客户(身份证,姓名,用户名,密码)
对于links
table
,您需要foreign key
clients
table
,例如
links(id, inner_text, url, client_id)
我知道您将拥有更多clients
并且链接特定于客户端,但您可以使用links.client_id
实现此分离。您可以count
这样的客户links
:
select count(*)
from links
where client_id = 5
其中5是使用。{/ p>过滤client_id
的当前links