使用for循环在MySQL数据库中插入多个图像

时间:2016-08-17 09:16:16

标签: php mysql

我需要以下列格式在数据库中插入多个图像, 09823754257b41f19e24c01471.jpg, 754257b41f19e24c01471422234.jpg,

我编写了以下代码以在数据库中插入值

<?php include "dbconnect.php";

if(isset($_POST['property_add'])){  
$propTitle  = $_POST['title'];
$propSize   = $_POST['size'];
$propType   = $_POST['type'];
$propLoc    = $_POST['location'];
$propStatus = $_POST['status'];
$propPrice  = $_POST['price'];
$propDesc   = $_POST['propDesc'];

if(isset($_FILES['files'])){
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
        $temp = explode(".", $_FILES['files']['name'][$key]);
        $file_name = rand().uniqid().round(microtime(true)) . '.' . end($temp);
        $file_size =$_FILES['files']['size'][$key];
        $file_tmp =$_FILES['files']['tmp_name'][$key];
        $file_type=$_FILES['files']['type'][$key];  

        $desired_dir="../property/".$propTitle."/".$propStatus."/";
        if(is_dir($desired_dir)==false){
            mkdir("$desired_dir", 0777, true);      // Create directory if it does not exist
        }
        if(is_dir("$desired_dir/".$file_name)==false){
            move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
        }else{                                  //rename the file if another one exist
            $new_dir="$desired_dir/".$file_name.time();
            rename($file_tmp,$new_dir) ;                
        }
        if($tmep){
          $photos[] = $file_name;
        }
    }

    $files  =implode(',', $photos);
    $query  =  "INSERT INTO `property`(`property_name`, `property_size`, `property_type`,`property_loc`, `property_status`, `property_price`, `property_desc`, `property_photos`) VALUES ('$propTitle','$propSize','$propType','$propLoc','$propStatus','$propPrice','$propDesc','$files')";
    mysqli_query($conn,$query);
    echo "<script>alert('Property Added Successfully')</script>";
    header('Location:../dashboard.php?tab=add&mode=success');
}
}

问题在于,如果我选择了两个图片img1img2,但上面的代码会为文件生成以下值

09823754257b41f19e24c01471.jpg, 754257b41f19e24c01471422234.jpg,8237542e24c0171422252. ,

我希望这两个值只插入数据库中,我不知道为什么生成第三个值。

3 个答案:

答案 0 :(得分:0)

你可以像这样使用数组

if($tmep){
    $photos[] = $file_name;  //put this code place of $photos .= $file_name." ,";
}

$files = implode(',', $photos);

这是返回完美的逗号分隔值。

答案 1 :(得分:0)

我认为这个问题发生在文件临时。请检查上传图片时如何生成临时文件(print_r()) http://php.net/manual/en/features.file-upload.multiple.php

我是面对这样的问题..我在临时

感谢

答案 2 :(得分:0)

最后,我使用unset最后一个数组

解决了我自己的问题
unset($photos[count($photos)-1]);
$files = implode(',', $photos);

谢谢你们