PHP mysql相册允许一张照片在多个相册中(数据库结构)

标签 php mysql image phpmyadmin

我有来自 mysql 数据库的两个表,其架构如下:

专辑:标题、创建日期、修改日期、专辑ID(主键) 照片:标题、image_url、拍摄日期、imageID(主键)

我正在创建一个由 php/mysql 驱动的在线相册,并且我希望允许一张照片出现在多个相册中,因此我没有将 albumID 作为外键放在照片中。 我能做到这一点的唯一方法是创建第三个表,将 imageID 与 albumID 关联起来,但到目前为止我还没有做到这一点。 我应该在第三个表中放置什么,该表将 imageID 与 albumID 相关联,并允许用户将一张照片放入多个相册中。

另外,我如何在 php 代码中查询 mysql 数据库以显示特定相册中的所有照片? (我正在使用 mysqli 函数) 任何帮助将非常感激! 提前致谢

到目前为止的代码:

<form enctype="multipart/form-data" method="post">
        <?php
        require_once 'config.php'; 
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if(isset($_POST['upload'])){
        $caption = $_POST['caption'];
        $albumID = $_POST['album'];
        $file = $_FILES ['file']['name'];
        $file_type = $_FILES ['file']['type'];
        $file_size = $_FILES ['file']['size'];
        $file_tmp = $_FILES ['file']['tmp_name'];
        $random_name = rand();

        if(empty($file)){
            echo "Please enter a file <br>";
        } else{
             move_uploaded_file($file_tmp, 'uploads/'.$random_name.'.jpg');
    $ret = mysqli_prepare($mysqli, "INSERT INTO photos (caption, image_url, date_taken, imageID)
    VALUES(?, ?, NOW()), null");
    $filename = "uploads/" . $random_name . ".jpg";
    mysqli_stmt_bind_param($ret, "ss", $caption, $filename);
    mysqli_stmt_execute($ret);
    echo "Photo successfully uploaded!<br>";
    $id = mysqli_prepare($mysqli, "INSERT into album_photo (albumID, imageID) values (?, $id)");
    }
    }
    ?>
    Caption: <br>
    <input type="text" name="caption">
    <br><br>
    Select Album: <br>
    <select name="album">
    <?php
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    $result = $mysqli->query("SELECT * FROM albums");
    while ($row = $result->fetch_assoc()) {
        $albumID = $row['albumID'];
        $title = $row['title'];
        echo "<option value='$albumID'>$title</option>";
    }
    ?>
    </select>
    <br><br>
    Select Photo: <br>
    <input type="file" name="file">
    <br><br>
    <input type="submit" name="upload" value="Upload">
</form>

最佳答案

您是否尝试过使用像 Doctrine 或 Eloquent 这样的 ORM?您可以使用它们来实现多对多关系(这是您在此处尝试执行的操作的技术名称)。

This answer很好地总结了如何在 SQL 中实现简单的多对多关系。

关于PHP mysql相册允许一张照片在多个相册中(数据库结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235104/

相关文章:

css - 如何垂直对齐div内的图像

html - 使图像仅通过其特定部分响应?

c - 从 Linux 控制台显示图像

javascript - 使用 .serializeArray 从所有选中的复选框中获取值

php - 在 php 中使用插入、选择和值

php - MySQL/PHP 查询反向关系

mysql - 使用无符号整数的算术元素(加法)进行 SQL 范围分区 - 它会优化 WHERE 查询吗? (MySQL、PostgreSQL)

php - 两个 WHERE 语句

php - 最后插入数据库的 id

php dom获取图片src路径编码