如何通过格式"tag1,tag2,tag3“将其转换为单个tag1查询字符串以查找相关项?上面的代码很混乱,会为此使用太多的资源。也许有更好的解决办法。谢谢
$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);
}发布于 2016-01-01 22:51:00
使用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);发布于 2016-01-01 19:52:39
您可以检索已排序的查询,从而消除代码中对几个查询的需求:
SELECT * FROM items ORDER BY tags ASC;您只需跟踪上一个tags,以便知道何时开始使用下一个标记。
https://stackoverflow.com/questions/34559205
复制相似问题