gpt4 book ai didi

php - 重复数据库中的数据?

转载 作者:行者123 更新时间:2023-11-30 23:44:08 26 4
gpt4 key购买 nike

具有以下列的数据库:

Database Columns

我假装我的程序是用户选择他们想要的标签,以便与所选标签相对应的练习显示在屏幕上。例如,如果用户选择标签 1,则会出现练习 1 和练习 2。如果您选择标签 1 和 3,则会出现练习 1 和 2。

我的程序的问题是,例如,当用户选择标签 1 和 3 时,会出现练习 1 和 2,但会重复练习 2。或者当您选择标签 1 和 2 时,重复练习 1。

有没有人知道有什么办法可以避免这种情况发生?只显示一次练习?

这里我展示了我的部分代码:

$sql = "SELECT * FROM exercises, union, tags where exercise_id = exercise_id_fk and tag_id = tag_id_fk";

if (!empty($_SESSION['tags_array'])) {
$sql .= " and (";
foreach ($_SESSION['tags_array'] as $tagId)
$sql .= 'tag_id = ' . $tagId . ' or ';

$sql .= "tag_id = -1);";
}

$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo $row["exercise_id"] . ". " . $row["title"] . "<br>";
}

最佳答案

我建议您尝试使用 GROUP BY 表达式,例如:

$sql = "SELECT * FROM exercises e INNER JOIN union u ON u.exercise_id_fk = e.exercise_id INNER JOIN tags t ON t.tag_id = u.tag_id_fk WHERE 1 = 1";

if (!empty($_SESSION['tags_array'])) {
$sql .= " and (";
foreach ($_SESSION['tags_array'] as $tagId)
$sql .= 't.tag_id = ' . $tagId . ' or ';

$sql .= "t.tag_id = -1)";
}

$sql .= " GROUP BY e.exercise_id;";

$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo $row["exercise_id"] . ". " . $row["title"] . "<br>";
}

关于php - 重复数据库中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51650430/

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