0

I am trying to upload 3 separate images to upload on the server using. the code doesn't throw any error but only 1st image gets uploaded. The other two images are not uploaded on the server but Its name gets inserted into the database.

here is my code to upload the images:


    <?php
include("common_code.php");
include("database_connection.php");

$property_id = $_POST['id'];
if (!$_FILES['file1']['size'] == 0) {
    $temp = explode(".", $_FILES["file1"]["name"]);
    $extension = end($temp);
    $fileName1= mt_rand(). "_". time(). "." .$extension;
    $image_tmp_name = $_FILES['file1']['tmp_name'];
    $folder = "images/property_images/";
    $folder = $folder . $fileName1;
    move_uploaded_file($image_tmp_name, $folder);
    $uploadQuery = "INSERT INTO property_photos (filenames,property_id) VALUES ('$folder','$property_id')";
    $run = mysqli_query($connection, $uploadQuery);
}

if (!$_FILES['file2']['size'] == 0) {
    $temp2 = explode(".", $_FILES["file2"]["name"]);
    $extension2 = end($temp2);
    $fileName2= mt_rand(). "_". time(). "." .$extension2;
    $image_tmp_name = $_FILES['file2']['tmp_name'];
    $folder2 = "images/property_images/";
    $folder2 = $folder2 . $fileName2;
    move_uploaded_file($image_tmp_name2, $folder2);
    $uploadQuery2 = "INSERT INTO property_photos (filenames,property_id) VALUES ('$folder2','$property_id')";
    $run2 = mysqli_query($connection, $uploadQuery2);
}

if (!$_FILES['file3']['size'] == 0) {
    $temp3 = explode(".", $_FILES["file3"]["name"]);
    $extension3 = end($temp3);
    $fileName3= mt_rand(). "_". time(). "." .$extension3;
    $image_tmp_name = $_FILES['file3']['tmp_name'];
    $folder3 = "images/property_images/";
    $folder3 = $folder3 . $fileName3;
    move_uploaded_file($image_tmp_name3, $folder3);
    $uploadQuery3 = "INSERT INTO property_photos (filenames,property_id) VALUES ('$folder3','$property_id')";
    $run3 = mysqli_query($connection, $uploadQuery3);
}

header("Location:property_reg_successful.php?id=$property_id");

Only file1 gets uploaded into a server! file2 and file3 not uploaded.

  • 1
    This feels like a loop could be used instead. `move_uploaded_file` returns false on failure, make sure to check that, and `echo` out the values so that you can see the final strings – Chris Haas May 16 '21 at 14:09
  • Good suggestion @Chris Haas, a loop is a definite improvement to this code, and would help avoid trivial copy-and-paste errors like this. – dougwoodrow May 16 '21 at 15:53

1 Answers1

0

You've just got a simple variable-naming error:

$image_tmp_name = $_FILES['file2']['tmp_name'];

[...]

move_uploaded_file($image_tmp_name2, $folder2);

Note the different variable names "$image_tmp_name" and "$image_tmp_name2".

dougwoodrow
  • 1,111
  • 12
  • 22