php - 我是否使用了太多的 MySQL 查询来获取所有具有特定标签的图像?

标签 php mysql

我的数据库中有以下 3 个表。

Table: Images
Columns: Image_ID, Title, Description, Author, Date, Path, Rating

Table: Tags
Columns: Tag_ID, Title

Table: TagsConnection
Columns: Image_ID, Tag_ID

为了得到某个标签对应的所有图片,我执行这段代码。

<?php

    $tagName = $_SERVER['QUERY_STRING'];
    $realTagName = substr($tagName, 1);
    $realestTagName = str_replace('%20', ' ', $realTagName);

    $sql = "SELECT * FROM tags WHERE tag='$realestTagName'";
    $result = mysqli_query($conn, $sql);
    $getResult = mysqli_fetch_assoc($result);
    $tagId = $getResult['id'];

    $sql2 = "SELECT * FROM tagsconnection WHERE tagid='$tagId'";
    $result2 = mysqli_query($conn, $sql2);

    while ($row = mysqli_fetch_assoc($result2)) {
        $imageId = $row['imageid'];
        $sql3 = "SELECT * FROM image WHERE id='$imageId'";
        $result3 = mysqli_query($conn, $sql3);
        $getResult3 = mysqli_fetch_assoc($result3);
        echo    '<div class="imageContainer">
                <h1>'.$getResult3['name'].'</h1>
                <a href="imageInfo.php?='.$getResult3["path"].'">
                <img class="uploadedImg" src="uploads/'.$getResult3["path"] .'" alt="Random image" />
                </a>
                </div>';
    }


?>

我有种不好的预感,觉得自己没有按应有的方式去做,所以我决定在这里四处询问,并尽可能获得一些提示和指示。

最佳答案

使用连接,这是一个基本的例子

    SELECT * FROM tags
JOIN tagsconnection ON tagsconnection.tagid=tags.id
JOIN image ON image.id=tagsconnection.imageId
WHERE tag=$realestTagName

如果您不熟悉联接,这里有一个很好的教程 https://www.w3schools.com/sql/sql_join.asp

关于php - 我是否使用了太多的 MySQL 查询来获取所有具有特定标签的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45108624/

相关文章:

java - JPA 不向表添加复合约束

php - ajax加载mysql数据到多个div

php - Laravel 在测试时无法连接到 sqlite 并使用开发 postgresql 设置

PHP - 如何在测验中使用 previous 和 forward 作弊

具有值的 PHP 数组返回 NULL

php - MySQL查询用于重新分配图片中的标签并避免重复

php - symfony 功能测试的 500 状态代码

php - 正则表达式匹配 @Joe 之类的标签,但不匹配电子邮件地址

mysql - 创建表 mytablename.now() 的语法是什么?

mysql - MySQL 中 "insert ignore"和 replace 之间的性能差异是什么?