Php 更新输入类型=";文件";并为图像保留路径
这是我的密码Php 更新输入类型=";文件";并为图像保留路径,php,file-upload,Php,File Upload,这是我的密码 <?php include "../../../config/config.php"; session_start(); if (isset($_GET['id'])) { $id = $_GET['id']; } else { die("Not found"); } if (isset($_POST['submit-edit'])) { $title = mysqli_real_escape_string($con, $_POST['title']);
<?php
include "../../../config/config.php";
session_start();
if (isset($_GET['id'])) {
$id = $_GET['id'];
} else {
die("Not found");
}
if (isset($_POST['submit-edit'])) {
$title = mysqli_real_escape_string($con, $_POST['title']);
$description = mysqli_real_escape_string($con, $_POST['description']);
$category = mysqli_real_escape_string($con, $_POST['category']);
/* ----------------------- MAIN IMAGE -------------------------- */
$target_dir = "../../../img/find/thumbs-categorii/";
$target_file2 = "" . basename($_FILES["img-edit"]["name"]);
$target_file = $target_dir . basename($_FILES["img-edit"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
// Check file size
if ($_FILES["img-edit"]["size"] > 100000) {
$_SESSION['image-size'] = 1;
exit();
}
//
//Allow certain file formats
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" && $imageFileType != NULL) {
$_SESSION['image-format'] = 1;
exit();
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["img-edit"]["tmp_name"], $target_file)) {
} else {
echo "Sorry, there was an error uploading your file.";
// exit();
}
$query = "UPDATE descopera_second" .
"SET title='" . $title . "', text='" . $description . "', image='" .
$target_file2 . "', fk_descopera_first='" . $category .
"' WHERE id=" . $id;
var_dump($query);
exit();
$result = mysqli_query($con, $query);
// var_dump($query);
// exit();
if ($result) {
$_SESSION['edit_slider'] = 1;
header("Location: /dashboard/");
} else {
//
header("Location: /dashboard/");
}
}
}
?>
如果带有图像的输入为空,我希望保留数据库中的当前路径。我不知道为什么,但我的代码当前停留在
echo“对不起,上传文件时出错。”
并更改图像在我的数据库中的路径。如果输入为空,我希望保留当前路径,因为我只想编辑 您定义了$uploadOk=1
,但该值从未更改。因此,以下代码将始终执行else
条件的一部分
if (move_uploaded_file($_FILES["img-edit"]["tmp_name"], $target_dir)) {
if ($uploadOk == 0) {
} else {
/* Everything in here will be executed */
}
if (move_uploaded_file($_FILES["img-edit"]["tmp_name"], $target_file)) {
} else {
echo "Sorry, there was an error uploading your file.";
// exit();
}
现在看一下这个条件块中的所有代码
首先是另一个条件
if ($uploadOk == 0) {
} else {
/* Everything in here will be executed */
}
if (move_uploaded_file($_FILES["img-edit"]["tmp_name"], $target_file)) {
} else {
echo "Sorry, there was an error uploading your file.";
// exit();
}
如果您说代码正在停止,则表示move\u upload\u file
失败。如果用户在请求中未提供文件上载,则会出现这种情况。因为$target_file
将是空的,并且空字符串可能不是文件系统上的有效路径,另外一个事实是一开始没有文件上传,即使它是
在第一个条件块中发生的所有其他事情都会无条件地继续发生(即,即使没有上传文件,也会更新数据库)
发生这种情况时,请尝试使用检查$target\u file2
的值。这不是你所期望的。我们之所以知道这一点,是因为您将其初始化为$target\u file2=”“。basename($_文件[“img编辑”][“名称”])代码>以上,并且没有文件上载。因此,$\u文件
为空
var_dump($target_file2);
因此,更好的方法是在尝试更新数据库中的该值之前,先检查是否发生了有效的文件上载。您可能打算使用顶部的$uploadOk
变量来执行此操作
if (isset($_FILES["img-edit"]["tmp_name"])) {
$query = "UPDATE descopera_second" .
"SET title='" . $title . "', text='" . $description . "', image='" .
$target_file2 . "', fk_descopera_first='" . $category .
"' WHERE id=" . $id;
} else {
$query = "UPDATE descopera_second" .
"SET title='" . $title . "', text='" . $description . "'," .
", fk_descopera_first='" . $category .
"' WHERE id=" . $id;
}
您定义了$uploadOk=1
,但该值从未更改。因此,以下代码将始终执行else
条件的一部分
if ($uploadOk == 0) {
} else {
/* Everything in here will be executed */
}
if (move_uploaded_file($_FILES["img-edit"]["tmp_name"], $target_file)) {
} else {
echo "Sorry, there was an error uploading your file.";
// exit();
}
现在看一下这个条件块中的所有代码
首先是另一个条件
if ($uploadOk == 0) {
} else {
/* Everything in here will be executed */
}
if (move_uploaded_file($_FILES["img-edit"]["tmp_name"], $target_file)) {
} else {
echo "Sorry, there was an error uploading your file.";
// exit();
}
如果您说代码正在停止,则表示move\u upload\u file
失败。如果用户在请求中未提供文件上载,则会出现这种情况。因为$target_file
将是空的,并且空字符串可能不是文件系统上的有效路径,另外一个事实是一开始没有文件上传,即使它是
在第一个条件块中发生的所有其他事情都会无条件地继续发生(即,即使没有上传文件,也会更新数据库)
发生这种情况时,请尝试使用检查$target\u file2
的值。这不是你所期望的。我们之所以知道这一点,是因为您将其初始化为$target\u file2=”“。basename($_文件[“img编辑”][“名称”])代码>以上,并且没有文件上载。因此,$\u文件
为空
var_dump($target_file2);
因此,更好的方法是在尝试更新数据库中的该值之前,先检查是否发生了有效的文件上载。您可能打算使用顶部的$uploadOk
变量来执行此操作
if (isset($_FILES["img-edit"]["tmp_name"])) {
$query = "UPDATE descopera_second" .
"SET title='" . $title . "', text='" . $description . "', image='" .
$target_file2 . "', fk_descopera_first='" . $category .
"' WHERE id=" . $id;
} else {
$query = "UPDATE descopera_second" .
"SET title='" . $title . "', text='" . $description . "'," .
", fk_descopera_first='" . $category .
"' WHERE id=" . $id;
}
您是否在标记中使用enctype=“多部分/表单数据”?是的。。。这不是问题所在。我看到if不会变成else..您是否在标记中使用enctype=“multipart/form data”?是的。。。这不是问题所在。我看到了“如果”不会变成“其他”…也许你可以添加一些解释?也许你可以添加一些解释?谢谢你的回答。我有一个小问题,我试着用两个查询来创建if(isset($\u FILES['img-edit']['tmp\u name'])。如果输入不为空,则有效;如果输入为空,则查询将返回NULL。请确保检查错误。我的错误,但解决方案是最好的!谢谢!:)谢谢你的回答。我有一个小问题,我试着用两个查询来创建if(isset($\u FILES['img-edit']['tmp\u name'])。如果输入不为空,则有效;如果输入为空,则查询将返回NULL。请确保检查错误。我的错误,但解决方案是最好的!谢谢!:)