【问题标题】:Image is not uploading to database图片未上传到数据库
【发布时间】:2026-02-21 14:10:01
【问题描述】:

php

      if(isset($_POST['save_albums']))
                {
                    $name = $_POST['album_name'];
                    $designation = $_POST['album_designation'];
                    $images = $_FILES["album_image"]["name"];

                    if(file_exists("uploads/" .$_FILES["album_image"]["name"]))

                    {
                        $store = $_FILES["album_image"]["name"];
                        $_SESSION['status'] = "Image already exists.'.$store.' ";
                        header('Location: albums.php');
                    }

                    else
                    {

                        $query = "INSERT INTO albums ('name','designation','images') VALUES ('$name','$designation','$images')";
                        $query_run = mysqli_query($connection,$query);

                        if($query_run)
                        {
                            move_uploaded_file($_FILES["album_image"]["tmp_name"], "uploads/".$_FILES["album_image"]["name"]);
                            $_SESSION['success'] = "Image Added";
                            header('Location: albums.php');
                        }
                        else
                        {
                            $_SESSION['status'] = "Image Not Added";
                            header('Location: albums.php'); 
                        }
                    } 
                }

            i am watching a video of funda Web It on YouTube and he did this code i do the same thing and the image it is not uploading can someone help me
                <?php
                    include('security.php');
                    include('includes/header.php');
                    include('includes/navbar.php');
                ?>



                <!-- modal medium -->
                <div class="modal fade" id="albumsModal" tabindex="-1" role="dialog" aria-labelledby="mediumModalLabel"
                    aria-hidden="true">
                    <div class="modal-dialog modal-lg" role="document">
                        <div class="modal-content">
                            <div class="modal-header">
                                <h5 class="modal-title" id="mediumModalLabel">Albums</h5>
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                    <span aria-hidden="true">&times;</span>
                                </button>
                            </div>
                            <div class="modal-body">
                                <div class="login-logo">
                                    <a href="#">
                                        <img src="images/icon/logo.png" alt="CoolAdmin">
                                    </a>
                                </div>
                                <div class="login-form">
                                    <form action="albums_code.php" method="post" enctype="multipart/form-data">
                                        <div class="form-group">
                                            <label>Name</label>
                                            <input class="au-input au-input--full" type="text" name="album_name" placeholder="Enter Name" required>
                                        </div>
                                        <div class="form-group">
                                            <label>Designation</label>
                                            <input class="au-input au-input--full" type="text" name="album_designation"
                                                placeholder="Enter Designation" height="38px" required>
                                        </div>
                                        <div class="form-group">
                                            <label>Upload Image</label>
                                            <input class="au-input au-input--full" type="file" name="album_image" id="album_images"
                                             height="38px" required>
                                        </div>
                                        <button class="au-btn au-btn--block au-btn--green m-b-20" name="save_albums"
                                            type="submit">Save</button>
                                        <button type="button" class="au-btn au-btn--block au-btn--red m-b-20"
                                            data-dismiss="modal">Cancel</button>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>




                <!-- MAIN CONTENT-->
                <div class="main-content">
                    <div class="section__content section__content--p30">
                        <div class="container-fluid">
                            <div class="row">
                                <div class="col-md-12">
                                    <div class="card">
                                        <div class="card-header">
                                            <i class="mr-2 fa fa-align-justify"></i>
                                            <strong class="card-title" v-if="headerText">Albums</strong>
                                        </div>
                                        <div class="card-body">
                                            <button type="button" class="btn btn-secondary mb-1" data-toggle="modal"
                                                data-target="#albumsModal">
                                                ADD
                                            </button>
                                            <?php
                                                if(isset($_SESSION['success']) && $_SESSION['success'] != "")
                                                {
                                                    echo '<h4 class = "alert alert-success text-center">' .$_SESSION['success'] .'</h4>';
                                                    unset($_SESSION['success']);
                                                }

                                                if(isset($_SESSION['status']) && $_SESSION['status'] != "")
                                                {
                                                    echo '<h4 class = "alert alert-danger text-center ">' .$_SESSION['status'] .'</h4>';
                                                    unset($_SESSION['status']);
                                                }
                                            ?>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <!-- end modal medium -->
                            <div class="row">
                                <div class="col-lg-12">
                                    <div class="table-responsive table--no-card m-b-30">

                                        <!-- Retreive Data From Database And Display In Table -->
                                        <table class="table table-borderless table-striped table-earning">
                                            <thead>
                                                <tr>
                                                    <th>ID</th>
                                                    <th>Name</th>
                                                    <th>Designation</th>
                                                    <th>Image</th>
                                                    <th>Edit</th>
                                                    <th>Delete</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                <tr>
                                                    <td></td>
                                                    <td></td>
                                                    <td></td>
                                                    <td></td>
                                                    <td>
                                                        <button type="submit" class="btn btn-success"><i
                                                                class="fas fa-edit pr-2"></i>Edit</button>
                                                    </td>
                                                    <td>
                                                        <button type="submit" class="btn btn-danger"><i
                                                                class="fas fa-trash-alt pr-2"></i>Delete</button>
                                                    </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

                <?php
                    include('includes/scripts.php');
                    include('includes/footer.php');
                ?>


【问题讨论】:

  • 了解prepared statement以防止sql注入
  • 请同时发布您的 HTML 表单代码
  • 我添加了我的html代码

标签: php html sql


【解决方案1】:

首先,这段代码不需要重复多次:

$_FILES["album_image"]["name"];

只需将其设置为一个变量,然后在其余代码中使用该变量。但是文件名必须首先清理,这就是为什么不能像现在这样使用它。

接下来,您没有提供足够的详细信息,仅提供“图像未上传到数据库”的主题标题。这是否意味着该文件至少已上传到您的目录? PHP 会报错吗?您是在处理 PHP 错误,还是忽略它们?记录是否保存到数据库中?

也许您的 PHP 配置默认不接受文件上传。 检查您的配置文件php.ini 并查找file_uploads 指令。

您必须确保文件确实已更新。 例如:How to check whether the user uploaded a file in PHP?

您可以转储所有 POST 和 FILE 请求变量并查看浏览器发送的值。验证数据是否存在以及它的外观。

我的建议是停止你正在做的事情并阅读一下。 由于多种原因,此代码高度不安全

  • SQL 注入 很容易被利用,因为您没有使用参数化查询(尝试在文本框字段中添加一些单引号,您的代码会很快崩溃)
  • 缺乏对用户输入的清理
  • 文件上传非常危险,您甚至没有正确检查文件是否确实已上传、文件扩展名等,因此攻击者可以轻松上传 PHP shell 并控制您的服务器
  • 如果攻击者篡改文件名并注入'../../../'、斜杠或空字节会怎样?您错误地假设文件将始终进入上传文件夹并且有人无法绕过您的代码。

这里有一些有用的阅读:

但这些资源并未涵盖所有可能的情况。这只是一个开始。

我建议您使用现有的第三方库,而不是重新发明*。有大量经过验证且免费的开源代码。

或者更好的是,使用真正的开发框架。这种编码是 10 或 15 年前 PHP 应用程序的完成方式。如今,开发人员使用框架来加速开发、重用代码并避免常见的陷阱和安全漏洞

如果您将此代码放在暴露在 Internet 上的服务器上,您很快就会被黑客入侵。

此外,通常不允许覆盖现有图像。 我要做的是首先保存记录,检索唯一 ID,然后在文件名中使用该唯一 ID 重命名图像。例如,如果记录使用 ID 135244 保存,只需将图像保存为 135244.jpg。

【讨论】: