gpt4 book ai didi

php - MySQL查询以搜索特定名称的标签

转载 作者:行者123 更新时间:2023-12-01 00:39:51 25 4
gpt4 key购买 nike

我正在尝试进行查询以搜索特定用户名的标签。

我想要实现的是按标签对名称进行排序。

我有一个为某个用户显示图片的页面,用户将图片上传到他的页面,然后他无法在页面中显示它们

(pictures.php?user=John%Doe&tag=waterfall)

然后我用 URL 中的参数值设置一个变量

$user = $_GET['user'];
$tag= $_GET['tag'];

在我的数据库中,表格是这样形成的(图片设置了链接,所以我只放一个示例链接):

user_name    | picture               | tag1      | tag2      | tag3   | tag4
John Doe | example.com/picture1 | waterfall | jungle | null | Green
Carl Johnson | example.com/picture4 | null | waterfall | forest | null
Joseph | example.com/picture14 | street | car | people | null

他们都有不同的图片和不同的标签

我试过这样查询

SELECT * FROM tb_user WHERE name = '$user' AND tag1= '$tag' OR tag2 = '$tag' OR tag3 = '$tag' OR tag4 = '$tag'

这是实现最接近我想要的问题的查询,问题是输出不是我想要的

输出(我有一个表格来显示数据,它是这样的):

John Doe     | example.com/picture1 | waterfall
Carl Johnson | example.com/picture4 | waterfall

问题是它显示了所有具有我想要订购的标签的名称,我只想获取查询用户名的输出

如果你们明白我想要实现的目标并能提供帮助,非常感谢!

最佳答案

问题出在您的 逻辑上。如果这些标签匹配,它会包含其他名称。很容易解决,只需使用括号:

SELECT * 
FROM tb_user
WHERE (name = '$user') AND
(tag1= '$tag' OR tag2 = '$tag' OR tag3 = '$tag' OR tag4 = '$tag')

或者您可以使用 in:

SELECT * 
FROM tb_user
WHERE name = '$user' AND '$tag' IN (tag1,tag2,tag3,tag4)

关于php - MySQL查询以搜索特定名称的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com