查找相关项目尽管标签

时间:2016-01-01 19:16:29

标签: php mysql

如何通过格式“tag1,tag2,tag3”将其转换为单个MySQL查询字符串以查找相关项目?上面的代码是一团糟,将使用太多的资源。可能有更好的解决方案。 感谢

$related = [];
$q = mysql_query("select tags from items");
while($row = mysql_fetch_assoc($q)){
$tags = $row['tags']; //format: tag1,tag2,tag3
$split = explode(",",$tags);

foreach ( $split as $tag):
    $find = mysql_query("select * from items where tags = '".$tag."'");
    $again = mysql_fetch_assoc($find);

    $related[] = $again;
endforeach;

echo "Found related:<br>";
print_r($related);

}

2 个答案:

答案 0 :(得分:0)

您可以检索它们,因此无需在代码中删除多个查询:

tags

您只需要跟踪之前的d1<-data.frame(Plot_ID=c(1,1,2,2,3,3), Species=c("a","b","a","c","d","c"), Count=c(1,1,1,1,1,1)) ,以便了解何时开始使用下一个标记。

答案 1 :(得分:0)

使用mysql find_in_set()函数。它的工作原理如下。

SELECT * FROM items WHERE FIND_IN_SET(tag1,tag2,tag3) > 0;

由于您的传入输入已经是命令分隔,因此您需要做的就是添加引号。

$tags = $row['tags']; //format: tag1,tag2,tag3
$set = "'".implode("','", $tags)."'";

$sql = "SELECT * FROM items WHERE FIND_IN_SET(" . $set . ") > 0);