无法更新php和MySQL中的文件名


Unabe to Update File Name in php and MySQL

我有一个包含3个输入字段的更新表单。输入类型为文件,用户可以上传现有文件并将其更新为新文件。我想知道为什么只有一个输入字段可以上传和更新数据库上的文件名。另外两个输入字段无法更新数据库中文件的名称。以下是供参考的代码;

html

<form class="pr_form" name="pr" method="post" action="updated-form.php" enctype="multipart/form-data">
<input type="file" name="uploaded[]" class="filestyle" data-buttonText="Update Quotation 1" multiple="multiple"> //only this field can update the file name on db
<input type="file" name="uploaded[]" class="filestyle" data-buttonText="Update Quotation 1" multiple="multiple">
<input type="file" name="uploaded[]" class="filestyle" data-buttonText="Update Quotation 1" multiple="multiple">
</form>

php&MySQL

//validation and $_POST code here 
for($i=0; $i<count($_FILES['uploaded']['name']); $i++) {
    $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i];
    if($tmpFilePath != "" || !empty($tmpFilePath)) {
        $shortname = $_FILES['uploaded']['name'][$i];
        $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i];
        if(!$msgError && move_uploaded_file($tmpFilePath, $filePath)) {
            $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][2]."' WHERE pr_id='$pr_id'";
        }
    }
}
//query and success/fail message

文件已成功上传到文件夹中,但在数据库中,输入字段编号2&3.例如,如果用户只想上传/更新2号字段,则用户需要使用1号字段来上传文件。提前感谢您的帮助。如果我在代码上有任何错误,请告诉我

编辑的代码

对不起,我的错误使别人感到困惑。希望这有帮助:

if(isset($_FILES['uploaded'])){
        //select file name on db to check whether file exist or not 
        $sql="SELECT * FROM purchase WHERE pr_id='$pr_id'";
        $result=mysqli_query($conn, $sql);
        if(mysqli_num_rows($result) > 0){
            while($row=mysqli_fetch_assoc($result)){
                $quotation_1=$row['quotation_1'];
                $quotation_2=$row['quotation_2'];
                $quotation_3=$row['quotation_3'];
            }
        }
        for($i=0; $i<count($_FILES['uploaded']['name']); $i++){
            $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i];
            if($tmpFilePath != "" || !empty($tmpFilePath)){
                $shortname = $_FILES['uploaded']['name'][$i];
                $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i];
            //}
        if(!$msgError){
            if($quotation_1!=NULL && $quotation_2!=NULL && $quotation_3==NULL){
                $sql = "UPDATE purchase SET quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."' WHERE pr_id='$pr_id'";
            } elseif($quotation_1!=NULL && $quotation_2==NULL && $quotation_3!=NULL){
                $sql = "UPDATE purchase SET quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."' WHERE pr_id='$pr_id'";
            } elseif($quotation_1==NULL && $quotation_2!=NULL && $quotation_3!=NULL){
                $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."' WHERE pr_id='$pr_id'";
            } elseif($quotation_1!=NULL && $quotation_2==NULL && $quotation_3==NULL){
                $sql = "UPDATE purchase SET quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."' WHERE pr_id='$pr_id'";
            } elseif($quotation_1==NULL && $quotation_2==NULL && $quotation_3==NULL){
                $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][2]."' WHERE pr_id='$pr_id'";
            } elseif($quotation_1==NULL && $quotation_2!=NULL && $quotation_3==NULL){
                $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."' WHERE pr_id='$pr_id'";
            } elseif($quotation_1==NULL && $quotation_2==NULL && $quotation_3!=NULL){
                $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."' WHERE pr_id='$pr_id'";
            }
        }
       }
}
//query and success/fail msg

因为UPDATE查询正在更新所有3个quotation_X列,即使用户只上载了一个文件。所以所有其他列的名称都为空。您应该只更新与上载的文件相对应的列。

$sql = "UPDATE purchase SET quotation_" . ($i+1) . " = '" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i]."' WHERE pr_id='$pr_id'";

尝试像这样编辑您的查询

    for($i=0; $i<count($_FILES['uploaded']['name']); $i++) {
        $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i];
        if($tmpFilePath != "" || !empty($tmpFilePath)) {
            $shortname = $_FILES['uploaded']['name'][$i];
            $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i];
            if(!$msgError && move_uploaded_file($tmpFilePath, $filePath)) {
                $fileIndex= $i+1;
                $sql = "UPDATE purchase SET quotation_$fileIndex='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$fileIndex]."' WHERE pr_id='$pr_id'";
            }
        }
    }