MySQLi准备语句:数据未插入数据库

时间:2020-05-17 08:40:25

标签: php mysql file mysqli prepared-statement

我正在处理文件上传应用程序。每个文件都被上载到网站的/files/目录中,而不是直接上载到数据库中。我一直在尝试用图像。 事实是,我还想使用数据库显示上传的每张图片,以及更多信息...,并检查是否已经存在同名文件。

用户需要执行的操作:使用file输入类型选择要上传的文件。

应用程序的作用:首先,它在数据库中检查文件名是否已被使用。如果不是,则继续使用$_FILES上传图片,并使用/files/功能将其移动到move_uploaded_file()文件夹中。然后,它在数据库表中创建一行,其中包含文件的类别(fcategory->“图片”),文件名(fname),其字体超赞图标({{1} }),基于ficon的描述(fdesc)和链接(flink)。

这是我的表格:

/files/$_FILES['name']

这是PHP代码:

<form action="#" method="POST" enctype="multipart/form-data">
   <input type="file" name="file">
   <input type="submit" class="btn" name="btn">
</form>

我决定不提供指向我网站的链接。这就是为什么我将其替换为<?php if (isset($_POST['btn'])) { $file = $_FILES['file']; $stmt = $conn->prepare("SELECT * FROM files WHERE fname = ?"); $stmt->bind_param("s", $file['name']); $stmt->execute(); $res = $stmt->get_result(); $num = $res->num_rows; if ($num == 0) { move_uploaded_file($file['tmp_name'], "files/".$file['name']); echo "<br><br>Image was uploaded."; $stmt2 = $conn->prepare("INSERT INTO files (fcategory, fname, ficon, fdesc, flink) VALUES (?, ?, ?, ?, ?)"); $name = $file['name']; $link = "https://LINKTOWEBSITE.COM/files/".$name; $stmt2->bind_param("sssss", "Imagine", $name, "fa-image", "No description.", $link); $stmt2->execute(); $stmt2->close(); $stmt->close(); } else { echo "<br><br>Choose another name for the image."; $stmt->close(); } } ?>

问题是,数据没有插入数据库中,但是文件插入了LINKTOWEBSITE.COM文件夹中。 可能是因为我使用了两个准备好的语句,一个嵌套在另一个语句中?第一条语句(用于检查已存在的文件)可以完美地工作。我该怎么办?

如果您需要更多信息,请发表评论,我会尽快编辑问题。非常感谢!

0 个答案:

没有答案