如何通过格式“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);
}
答案 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);