【问题标题】:Store multiple uploads by destination folder on MySQL DB在 MySQL DB 上按目标文件夹存储多个上传
【发布时间】:2019-05-03 22:23:03
【问题描述】:

我看到了一堆与我相似但不完全相同的问题,在某种程度上我将不得不改变我目前在 DB 上存储文件的方式。

我在第一个文件 (getPic.php) 上有这个表格:

<form enctype="multipart/form-data" method="POST" action="sendPics.php">
        <font size=4 color=DarkBlue><b>Choose 5 photos of your pet:</b></font><br><br>
    <input type="file" name="file[]" multiple="multiple" /><br><br>
    <input name="send" type="submit" value="Upload photos">

还有这个(sendPics.php)

$directory = "Images/";

if(!is_dir($directory)){ 
    echo "Folder does not exist";
}else{
    $file = isset($_FILES['file']) ? $_FILES['file'] : FALSE;
    for ($control = 0; $control < count($file['name']); $control++){

        $destiny = $directory."/".$file['name'][$control];
        if(move_uploaded_file($file['tmp_name'][$control], $destiny)){
            echo "Upload successful<br>"; 
        }else{
            echo "Error uploading the file";
        }   
    }
}

$destiny = "/".$destiny; 

我在 MySQL 中的表是这样的:

Field           | Type       
----------------+------------
 idPetsPics     | int(11)    
 linkProfilePic | varchar(60)
 linkPhoto1     | varchar(60)
 linkPhoto2     | varchar(60)
 linkPhoto3     | varchar(60)
 linkPhoto4     | varchar(60)
 Pet_idPet      | int(11)      //(FK with PetsID on Pet's table)

所以我需要存储上传图片的路径。目前我只能将第一个存储在数据库中,尽管所有 5 张图片都成功到达了目标文件夹。现在我有:

$petID = $_SESSION['petID']; // obtained from a third file (queries to insert date into Pet)
require_once('dbConnection.php');


$insertPetPic = "INSERT INTO petPic (idPetsPics, linkProfilePic, Pet_idPet) VALUES (NULL, '$destiny', $petID[0])";
mysqli_query($conn, $insertFotoPet);

如何更改我的代码以存储所有 5 条路径?

【问题讨论】:

    标签: php mysql arrays forms


    【解决方案1】:

    对于每个成功移动的图像,您需要将图像的路径存储在某处,例如在 $paths 数组中:

    $directory = "Images/";
    $paths = array();
    
    if(!is_dir($directory)){ 
        echo "Folder does not exist";
    }else{
        $file = isset($_FILES['file']) ? $_FILES['file'] : FALSE;
        for ($control = 0; $control < count($file['name']); $control++){
    
            $destiny = $directory."/".$file['name'][$control];
            if(move_uploaded_file($file['tmp_name'][$control], $destiny)){
                $paths[] = $destiny;
                echo "Upload successful<br>"; 
            }else{
                echo "Error uploading the file";
            }   
        }
    }
    

    然后在您的查询中使用数组中的路径:

    $insertPetPic = "INSERT INTO petPic (idPetsPics, linkProfilePic, linkPhoto1, linkPhoto2, linkPhoto3, linkPhoto4, Pet_idPet) VALUES (NULL, '$paths[0]', '$paths[1]', '$paths[2]', '$paths[3]', '$paths[4]', $petID[0])";
    

    【讨论】:

    • 做到了。我之前尝试过使用数组,但无法让它工作。谢谢!
    猜你喜欢
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2019-03-16
    • 2021-12-23
    • 2016-03-24
    相关资源
    最近更新 更多