数据库中的PHP和标记

数据库中的PHP和标记,php,Php,我将标签提交到一个数据库中,比如tag1、tag2、tag3。我如何将它们拆分成链接,然后向DB查询使用这些标记的其他提交?您可能应该将标记保存在单独的表中,并使用包含记录id的字段将它们链接到记录 数据库中的大多数一对多关系都需要单独的表。逗号分隔的值与数据库的优势背道而驰。我不太清楚,但如果您想解析标记字符串,可以使用: <?php str=" tag1, tag2, tag3 "; $array = explode(', ', trim(str)); ?>

我将标签提交到一个数据库中,比如tag1、tag2、tag3。我如何将它们拆分成链接,然后向DB查询使用这些标记的其他提交?

您可能应该将标记保存在单独的表中,并使用包含记录id的字段将它们链接到记录


数据库中的大多数一对多关系都需要单独的表。逗号分隔的值与数据库的优势背道而驰。

我不太清楚,但如果您想解析标记字符串,可以使用:

<?php 
  str=" tag1, tag2, tag3 "; 
  $array = explode(', ', trim(str)); 
?>

通常情况下,您会得到一个包含3个标记的数组


但是,您应该在另一个表中逐个插入标记,并对它们进行引用。

一种非常简单但非常有技巧的方法是,用开头和结尾的逗号输入标记,如
,tag1,tag2,tag3,tag4,
,因为这样您就可以通过查询
where标记,如“%,tag2,%“
当然,这很慢,而且有更高级的方法可以通过1:multi关系做到这一点。如果你想把标签做成链接,我会研究一个结构,其中一个表有帖子,一个表有标签。有一些表结构和解释如何工作。

您使用的是MySQL数据库吗?您要拆分的原始输入是什么?是的,MySQL。现在,数据通过文本框以tag1、tag2、tag3Minor Quible的格式提交,但您应该在分解后进行修剪,而不是在修剪后进行分解。逗号前后可以有任意数量的空格。我使用数组映射('trim',explode(','),strtolower($str))