我在从数据库中选择唯一文本时遇到问题。
这是一个电影数据库,让我们假设我在数据库中有2部电影。
第一部电影属于类别:戏剧,浪漫,战争 第二部电影在类别中:戏剧,惊悚
我需要的是返回一个将向我显示的数组:戏剧,浪漫,战争,惊悚。 我当前对mysql的查询如下:
$ query ='SELECT genres FROM imdb WHERE actors LIKE“%%'。$ name。'%”';
在while循环中,我使用“foreach”,如下所示:
foreach(explode(', ', $TMPL['genres']) as $v)
$TMPL['genre'] .= '<option value="'.urlencode($v).'">'.($v).'</option>';
这回归了我所有的价值观,包括重复的价值观,如下:戏剧,浪漫,战争狂暴,惊悚
有任何线索如何解决这个问题?
答案 0 :(得分:2)
$query = 'SELECT DISTINCT genres FROM imdb WHERE actors LIKE "%%'.$name.'%"';
会这样做
答案 1 :(得分:1)
使用DISTINCT
$query = 'SELECT DISTINCT genres FROM imdb WHERE actors LIKE "%%'.$name.'%"';
答案 2 :(得分:1)
所以你有一个列有分类列表的列?
遍历查询中的每一行并展开类型,将每个类型添加到主数组,然后使用array_unique()
如果我理解你的话,你很可能(很容易)使用MySQL,因为你没有正确地规范你的数据库。
答案 3 :(得分:1)
只需在具有重复值的数组上使用array_unique函数!
$ unique_values = array_unique($ TMPL ['genre']);