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。请确保检查错误。我的错误,但解决方案是最好的!谢谢!:)