【发布时间】:2016-10-20 17:49:53
【问题描述】:
这是我的桌子tracks:
+---+--------------------+
| id| tag|
+---+--------------------+
| 1 | dance,|
| 2 | dance,tecno,|
| 3 | dance,hihop,|
| 4 | rap,|
| 5 | country,|
| . | ...|
+---+--------------------+
我试过这个($value 是我的查询):
$tags = $this->db->query(sprintf("SELECT `tag`, `id` FROM `tracks` WHERE `tag` LIKE '%s' GROUP BY `tag` DESC LIMIT %s, %s", '%'.$this->db->real_escape_string($value).'%', $this->db->real_escape_string($start), $per_page));
while($row = $tags->fetch_assoc()) {
$rows[] = $row;
}
$tags = explode(',', $row['tag']);
$rows = array_unique(array_map('strtolower', $tags));
foreach($rows as $row) {
if(stripos($row, $value) !== false) {
$tag_output .= '<div class="hashtag-inner">
'.$row.'
</div>';
}
}
从这个例如。预期的输出是:dance, tecno, hiphop, rap, country 带有所有唯一标签,而不是标签 dance 的多个输出。
我的输出有什么问题?
【问题讨论】:
-
$this->db->real_escape_string($value) 中的 value 或 $value 是什么?
-
@scaisEdge 这是来自搜索输入的搜索查询
-
array_unique查看整个字符串,它不认为dance,和dance,techno是重复的。 -
@Barmar 我在想那个……那我该怎么办?