MySQL唯一数据

时间:2013-11-11 10:35:40

标签: php mysql

大家好,我有一个名为tag的列,其中包含1到无限制的标签,这些标签将以分号分隔,并且还有超过100行

我需要使用行和列构建一个菜单树,所以我必须得到各自的唯一值,任何人都可以帮助我完成这个,因为我不知道该怎么做。

+--+---------------------+
|id|tags                 |
+--+---------------------+
|1 |comedy;drama;tv      |
|2 |comedy;horror;movie  |
|3 |horror;tv;pictures   |
|4 |sitcom               |
|5 |drama;book           |
+--+---------------------+

结果应为

$array = array("comedy", "horror", "movie", "pictures", "drama", "tv", "sitcom", "book");

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

然后,您的查询会对查询中的每一行进行爆炸:

http://php.net/manual/en/function.explode.php

这将返回一个数组,然后您可以循环并执行您想要的操作。像这样:

$ExplodedResult = explode(";",$Row);


array()
(
    [0] => "comedy"
    [1] => "drama"
    [2] => "tv"
)

答案 1 :(得分:0)

希望这对你有用。

http://www.tero.co.uk/scripts/mysql.php

使用分隔符拆分字符串,然后从中分离出不同的字符串。 另一种选择:

$ explosionResult [] = explode(“;”,$ row);

将每行中的所有标记合并为一个数组,然后使用'array_unique'http://us2.php.net/function.array-unique

答案 2 :(得分:0)

下面做的事情......看看吧..

$query = "select tags from tags";

$result = mysql_query($query);
$exploded_tags=array();
while($rows=mysql_fetch_array($result))
{
$unexploded_tags=$rows['tags'];
$exploded_tags=array_merge($exploded_tags,explode(';',$unexploded_tags));
}
$exploded_tags=array_unique($exploded_tags);
print_r($exploded_tags)